-
1. Başlanğıc
- 1.1 Versiyaya Nəzarət Haqqında
- 1.2 Git’in Qısa Hekayəsi
- 1.3 Git Nədir?
- 1.4 Əmr Sətiri
- 1.5 Git’i Quraşdırmaq
- 1.6 İlk Dəfə Git Quraşdırması
- 1.7 Kömək Almaq
- 1.8 Qısa Məzmun
-
2. Git’in Əsasları
-
3. Git’də Branch
- 3.1 Nutshell’də Branch’lar
- 3.2 Sadə Branching və Birləşdirmə
- 3.3 Branch İdarəedilməsi
- 3.4 Branching İş Axınları
- 3.5 Uzaq Branch’lar
- 3.6 Rebasing
- 3.7 Qısa Məzmun
-
4. Server’də Git
- 4.1 Protokollar
- 4.2 Serverdə Git Əldə Etmək
- 4.3 Sizin öz SSH Public Key’nizi yaratmaq
- 4.4 Server qurmaq
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Tərəf Seçimləri
- 4.10 Qısa Məzmun
-
5. Paylanmış Git
-
6. GitHub
-
7. Git Alətləri
- 7.1 Reviziya Seçimi
- 7.2 Interaktiv Səhnələşdirmə
- 7.3 Stashing və Təmizləmə
- 7.4 İşinizin İmzalanması
- 7.5 Axtarış
- 7.6 Tarixi Yenidən Yazmaq
- 7.7 Reset Demystified
- 7.8 İnkişaf etmiş Birləşmə
- 7.9 Rerere
- 7.10 Git ilə Debugging
- 7.11 Alt Modullar
- 7.12 Bundling
- 7.13 Dəyişdirmək
- 7.14 Etibarlı Yaddaş
- 7.15 Qısa Məzmun
-
8. Git’i Fərdiləşdirmək
- 8.1 Git Konfiqurasiyası
- 8.2 Git Atributları
- 8.3 Git Hook’ları
- 8.4 Git-Enforced Siyasət Nümunəsi
- 8.5 Qısa Məzmun
-
9. Git və Digər Sistemlər
- 9.1 Git Müştəri kimi
- 9.2 Git’ə Miqrasiya
- 9.3 Qısa Məzmun
-
10. Git’in Daxili İşləri
- 10.1 Plumbing və Porcelain
- 10.2 Git Obyektləri
- 10.3 Git Referansları
- 10.4 Packfile’lar
- 10.5 Refspec
- 10.6 Transfer Protokolları
- 10.7 Maintenance və Məlumatların Bərpası
- 10.8 Mühit Dəyişənləri
- 10.9 Qısa Məzmun
-
A1. Appendix A: Digər Mühitlərdə Git
- A1.1 Qrafik interfeyslər
- A1.2 Visual Studio’da Git
- A1.3 Visual Studio Code’da Git
- A1.4 Eclipse’də Git
- A1.5 Sublime Text’də Git
- A1.6 Bash’da Git
- A1.7 Zsh’də Git
- A1.8 PowerShell’də Git
- A1.9 Qısa Məzmun
-
A2. Appendix B: Proqramlara Git Daxil Etmək
- A2.1 Əmr-sətri Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Git Əmrləri
- A3.1 Quraşdırma və Konfiqurasiya
- A3.2 Layihələrin Alınması və Yaradılması
- A3.3 Sadə Snapshotting
- A3.4 Branching və Birləşmə
- A3.5 Layihələrin Paylaşılması və Yenilənməsi
- A3.6 Yoxlama və Müqayisə
- A3.7 Debugging
- A3.8 Patching
- A3.9 E-poçt
- A3.10 Xarici Sistemlər
- A3.11 İdarəetmə
- A3.12 Plumbing Əmrləri
4.4 Server’də Git - Server qurmaq
Server qurmaq
Gəlin server tərəfində SSH girişini quraraq gəzək.
Bu nümunədə istifadəçilərinizin identifikasiyası üçün authorized_keys
metodundan istifadə edəcəksiniz.
Ubuntu kimi standart Linux distributorunda işlədiyinizi güman edirik.
Note
|
Burada təsvir edilənlərin yaxşı bir hissəsi, manual kopyalama və public key-ləri quraşdırmaq yerinə |
Birincisi, bir istifadəçi hesabı və bu istifadəçi üçün .ssh qovluğu yaradırsınız.
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
Bundan sonra, git
istifadəçisi üçün authorized_keys
faylına bəzi developer SSH public key-lərini əlavə etməlisiniz.
Güman edək ki, bəzi etibarlı public key-ləriniz var və onları müvəqqəti sənədlərdə saxlamısınız.
Yenə public key-lər bu kimi bir şeyə bənzəyir:
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
Onları sadəcə .ssh
qovluğundakı git
istifadəçinin authorized_keys
faylına əlavə edirsiniz:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
İndi, --bare
seçimi ilə git init
əmrindən istifadə edərək boş bir depo qura bilərsiniz:
$ cd /srv/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /srv/git/project.git/
Sonra, John, Josie və ya Jessica, layihənin ilk versiyasını uzaqdan əlavə edərək branch-a push edərək həmin depo içərisinə push edə bilər.
Diqqət yetirin ki, kimsə bir layihə əlavə etmək istədikdə maşına shell verməli və çılpaq bir depo yaratmalıdır.
git
istifadəçi və depo qurduğunuz serverin hostname olaraq gitserver
-dən istifadə edək.
Bunu daxili işlədirsinizsə və bu serverə işarə etmək üçün gitserver
üçün DNS qurursunuzsa, əmrləri olduğu kimi istifadə edə bilərsiniz (myproject
içərisində faylları olan bir layihə olduğuna inanaraq):
# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'Initial commit'
$ git remote add origin git@gitserver:/srv/git/project.git
$ git push origin master
Bu zaman digərləri onu klonlaşdıra bilər və dəyişiklikləri asanlıqla geri qaytara bilər:
$ git clone git@gitserver:/srv/git/project.git
$ cd project
$ vim README
$ git commit -am 'Fix for README file'
$ git push origin master
Bu metodla bir ovuc developer üçün Git serverini oxumaq/yazmaq üçün tez bir zamanda əldə edə bilərsiniz.
Qeyd etməlisiniz ki, hazırda bu istifadəçilərin hamısı serverə girib git
istifadəçisi kimi bir shell əldə edə bilərlər.
Bunu məhdudlaşdırmaq istəyirsinizsə, shell-in /etc/passwd
faylındakı başqa bir şeyə dəyişdirməlisiniz.
Git ilə əlaqəli git-shell
adlı məhdud bir alət vasitəsi ilə git
istifadəçi hesabını yalnız Git ilə əlaqəli fəaliyyətlə asanlıqla məhdudlaşdıra bilərsiniz.
Bunu git
istifadəçi hesabının giriş shell-i kimi qursanız, o zaman bu hesab serverinizə normal shell çıxışı əldə edə bilməz.
Bunun üçün bash
və csh
əvəzinə git-shell
daxil edin.
Bunu etmək üçün əvvəlcə git-shell
əmrinin tam path adını onsuz da olmadıqda /etc/shells
-ə əlavə etməlisiniz:
$ cat /etc/shells # see if git-shell is already in there. If not...
$ which git-shell # make sure git-shell is installed on your system.
$ sudo -e /etc/shells # and add the path to git-shell from last command
İndi isə chsh <username> -s <shell>
istifadə edərək istifadəçi üçün shell düzəldə bilərsiniz:
$ sudo chsh git -s $(which git-shell)
İndi git
istifadəçisi hələ də SSH bağlantısından Git depolarını push və pull etmık üçün istifadə edə bilər, ancaq maşın üzərində shell qoya bilmir.
Əgər cəhd etsəniz, giriş üçün rədd cavabı görəcəksiniz:
$ ssh git@gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed.
Bu nöqtədə, istifadəçilər hələ də git serverin çata biləcəyi hər hansı bir hosta daxil olmaq üçün SSH portunu istifadə edə bilərlər.
Bunun qarşısını almaq istəyirsinizsə, authorized_keys
faylını düzəldə bilərsiniz və məhdudlaşdırmaq istədiyiniz hər key-ə aşağıdakı seçimləri göndərə bilərsiniz:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Nəticə belə görünəcəkdir:
$ cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h
PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N
YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC
IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd
LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ
ICUvax2T9va5 gsg-keypair
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG...
İndi Git şəbəkə əmrləri hələ də yaxşı işləyəcək, lakin istifadəçilər bir shell əldə edə bilməyəcəklər.
Çıxışda deyildiyi kimi git-shell
əmrini bir az tənzimləyən git
istifadəçi ev qovluğunda bir qovluq da qura bilərsiniz.
Məsələn, serverin qəbul edəcəyi Git əmrlərini məhdudlaşdıra bilərsiniz və ya istifadəçilərin belə bir şəkildə SSH etməyə çalışdıqlarını görən mesajı düzəldə bilərsiniz.
Shell-in fərdiləşdirilməsi haqqında daha çox məlumat üçün git help shell
-i işə salın.