-
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.2 Server’də Git - Serverdə Git Əldə Etmək
Serverdə Git Əldə Etmək
İndi biz bu protokolları öz serverində işlədən Git serveri qoşulmasını tamamlayacağıq.
Note
|
Burada biz, bu servisləri macOS və Windows serverlərdə də işləməsi mümkün olan Linux bazalı serverdə adi, sadələşdirilmiş quraşdırılmaya lazım olan addımları və əmrləri nümayiş etdirəcəyik. Əsasən, öz infrastrukturunla server istehsalı tərtib etmək əməliyyat sistemi vasitələrində və ya təhlükəsizlik ölçülərində fərqlər yaradır, lakin ümid edirik ki, bu sizə qarışıqlığın nədə olduğu haqda ümumi ideya verəcək. |
Qaydasıyla ilk olaraq hər hansı bir Git server tərtib etmək üçün mövcud olan bir deponu yeni bir depoya (içində işlək qovluq olmayan) ixrac etməlisiniz. Bu ümumilikdə çox asandır.
Əvvəlcə öz deponuzu yeni boş depo yaratmaq məqsədilə klonlamaq üçün --bare
seçimi ilə klonlama əmrini işə salırsınız.
Konvensiyaya göre boş depo qovluğunun adı .git
sonluğu ilə bitir, məsələn:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
İndi sizin my_project.git
qovluğunuzda Git qovluğu datanızın kopyası olmalıdır.
Bu təxminən belə bir şeyə bərabərdir:
$ cp -Rf my_project/.git my_project.git
Konfiqurasiya faylında bəzi xırda dəyişikliklər ola bilər, lakin sizin məqsədinizdə bu təxminən eynidir. O, Git deposunu işlək qovluq olmadan özü götürür və yalnız özünə aid xüsusi qovluq yaradır.
Serverə Boş Depo Daxil Edilməsi
Artıq sizin boş deponuzun kopyası var və sadəcə etməli olduğunuz onu serverə qoyub protokolları tərtib etməkdir.
Fərz edək ki, siz SSH girişi olan git.example.com
adlanan server tərtib etmisiniz və bütün Git depolarınızı /srv/git qovluğunda saxlamaq istəyirsiniz. /srv/git
-in serverdə mövcud olduğunu fərz etsək, siz boş deponuzu aşağıdakı kimi kopyalayaraq yeni depo yarada bilərsiniz:
$ scp -r my_project.git user@git.example.com:/srv/git
Bu zaman, /srv/git
qovluğuna SSH bazalı oxuma girişi olan digər istifadəçilər bunu işlədərək sizin deponuzu klonlaya bilər:
$ git clone user@git.example.com:/srv/git/my_project.git
Əgər SSH-lərin istifadəçisi serverdədirsə və /srv/git/my_project.git
qovluğuna girişi icazəsi varsa, onların avtomatik olaraq push girişi də olacaqdır.
Əgər siz --shared
seçimindən istifadə edib git init
əmrini işlətsəniz, Git birmənalı şəkildə avtomatik olaraq depoya icazələr yazılması üçün qrup əlavə edəcək. Qeyd edək ki, bu əmri qoşduğunuz zaman prosesdəki heç bir əmri və ya işi tələf etməyəcəksiniz.
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared
Gördüyünuz kimi, Git deposu almaq, boş versiyasını yaratmaq və SSH girişi olan əməkdaşlarınız və sizin üçün serverə yerləşdirmək olduqca asandır. Artıq siz eyni proyektdə əməkdaşlıq etməyə hazırsınız.
Onu da qeyd etmək zəruridir ki, bir çox insanın giriş edə biləcəyi faydalı Git serveri tərtib etmək üçün bu ehtiyacınız olan hər şeydir - sadəcə SSH’lı hesabları serverə daxil edin və boş deponu bütün istifadəçilərin oxuma və yazma girişi olan yerə yapışdırın. Başqa heç nəyə ehtiyac yoxdur, artıq hazırsınız.
Digər bölmələrdə artıq daha mürəkkəb quraşdırmalarda genişləndirmələri görəcəksiniz. Bu müzakirəyə hər istifadəçi üçün hesab açmaya ehtiyac duyulmaması, depolara publik oxuma icazəsi verilir, veb UI və digərlərini tərtib etmək daxil edilir. Eyni zamanda yadda saxlamaq lazımdır ki, bir çox insanla özəl layihədə əməkdaşlıq etmək üçün sadəcə SSH serveri və boş depoya ehtiyacınız vardır.
Kiçik Quraşdırmalar
Əgər siz balaca qrupsunuzsa və ya az developer olan təşkilatınızda Git sınamaq istəyirsinizsə, bu sizin üçün çox asan ola bilər. Git serverin ən mürəkkəb aspektlərindən biri də istifadəçi idarəetməsidir. Əgər bəzi depoların istifadəçilərin bir hissəsi üçün yalnız oxunan, digər hissəsi üçün həm yazılan, həm oxunan olmasını istəyirsinizsə bunu quraşdırmaq daha çətin ola bilər.
SSH Girişi
Əgər sizin bütün developerlərinizin SSH girişi olan serveriniz varsa, bu ilk deponuzu quraşdırmaq üçün ən asan yerdir, çünki burada etməli olduğunuz heç nə yoxdur (son bölmədə göstərdiyimiz kimi). Əgər siz depolarınızda daha çox girişə nəzarət tipli icazələr olmasını istəyirsinizsə, siz onu öz serverinizin əməliyyat sisteminizin normal fayl sistemindəki icazələrlə həll edə bilərsiniz.
Əgər siz öz depolarınızı hər hesabın yazma icazəsi olmayan komandanızın serverində yerləşdirmək istəyirsinizsə, onlar üçün SSH sistemi tərtib etməlisiniz. Fərz etsək ki, sizin bunu edəcək serveriniz var, deməli quraşdırılmış SSH serveriniz var və bu şəkildə serverə daxil olmağınız mümkündür.
Komandanızdakı hər kəsə giriş təmin etməyin bir neçə yolu var.
Birincisi odur ki, hər kəsə hesab açmalısınız ki, bu da tam olaraq çox çətin bir yoldur. Ola bilər ki siz adduser
(və ya mümkün useradd
alternativi) işlətmək istəməyəsiniz və hər yeni istifadəçi üçün müvəqqəti parol yaratmalı olasınız.
İkinci metod mexanizmdə tək bir git
istifadəçi yaratmaq, hər bir yazı icazəsi olan istifadəçidən SSH public key’ni sizə göndərməsini istəmək və həmin key’i yeni git hesabındakı ` ~/.ssh/authorized_keys` faylına əlavə etməkdir. Həmin anda hər kəs git hesabına bu mexanizmlə giriş edə bilər. Bu heç bir şəkildə tapşırıqların yerinə yetirilməsinə təsir etmir, yəni sizin əlaqə qurduğunuz SSH istifadəçisi sizin qeyd etdiyiniz tapşırıqlara mane olmur.
Bunu etməyin digər yolu LDAP serverindən və ya artıq qurduğunuz digər mərkəzləşdirilmiş mənbələrdən identifikasiya edilmiş SSH serverin olmasıdır. Hər bir istifadəçinin mexanizmə shell girişi olduğu müddətcə fikirləşdiyiniz bütün SSH identifikasiya mexanizmləri işləyə bilər.