-
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
1.1 Başlanğıc - Versiyaya Nəzarət Haqqında
Bu fəsil Git ilə işə başlamaq haqqındadır. Versiya nəzarət alətləri ilə əlaqəli bəzi məlumatları izah etməyə başlayacağıq, sonra Git’in sisteminizdə necə işlədiləcəyinə və nəhayət işə başlamaq üçün necə qurulacağına nəzərdən keçirəcəyik. Bu fəslin sonunda Git’in niyə olduğunu, niyə istifadə etməli olduğunuzu və bunun üçün niyə hazır olmalı olduğunuzu başa düşəcəksiniz.
Versiyaya Nəzarət Haqqında
“Versiya nəzarəti” nədir və ona niyə diqqət etməliyik? Versiya nəzarət sistemi fayla və ya fayllar qrupuna bütün vaxt ərzində edilən dəyişiklikləri qeydə alır. Buna görə də sonradan siz istədiyiniz versiyaya arxaya qayıda bilirsiniz. Bu kitabdakı nümunələr üçün versiyalarına nəzarət edilən fayllar olaraq bir proqramın qaynaq kodlarını istifadə edəcəksiniz ki, bu da reallıqda sizə komputerdəki istənilən fayl üzərində eyni əməliyyatları etməyə imkan verəcək.
Qrafik və ya veb dizaynersinizsə və şəkilin və ya layoutun hər bir versiyasını saxlamaq istəyirsinizsə(hansı ki, böyük ehtimalla istəyəcəksiniz), bir versiya nəzarət sistemi (VNS) istifadə etmək üçün çox ağıllı seçimdir. O sizə seçilmiş faylları əvvəlki vəziyyətinə qaytarmağa, bütün proyekti əvvəlki vəziyyətinə geri qaytarmağa, vaxt ərzində edilmiş dəyişiklikləri müqayisə etməyə, kimin etdiyi sonuncu dəyişikliyin sistemdəki problemə səbəb olduğuna, kimin problemi nə vaxt təqdim etdiyinə və daha çoxuna imkan yaradır. VNS-dən istifadə ümumilikdə, hər şey tərs getdiyində və ya faylları itirdiyinizdə asanlıqla bərpa edə biləcəyiniz mənasına gəlir. Əlavə olaraq, bütün bunları çox kiçik səy ilə edirsiniz.
Lokal Versiya Nəzarət Sistemi
Bir çox insanın versiyaya nəzarət metodu faylları digər qovluğa atmaqdır (əgər ağıllıdırlarsa, üzərində vaxt yazılı bir qovluğa). Bu metod çox sadə olduğu üçün çox görülür, ancaq bu metod həm də inanılmaz dərəcədə səhvə meyillidir. Hansı qovluğun içində olduğunuzu unutmaq və istəmədiyiniz fayla səhv şeyi yazmaq vəya digər fayllara kopyalamaq çox sadədir.
Bu problemi aradan qaldırmaq məqsədi ilə proqramistlər uzun zaman öncə sadə verilənlər bazasına sahib olan VNS-ləri proqramlaşdırdılar ki, fayllara edilən bütün dəyişiklikləri nəzarət altında saxlamaq mümkün olsun.
![Lokal Versiya Nəzarət diaqramı](png/local.png)
VNS alətlərindən ən məhşurlarından biri RCS adlanırdı. O, bu gün də bir çox komputerdə yayılmışdır. RCS yamaq dəstələrini(fayllar arasındakı fərqləri) diskdə xüsusi formatda yadda saxlaması sayəsində fəaliyyət göstərir; İstənilən faylı göstərilmiş vaxta uyğun olaraq bütün yamaqları əlavə edərək yenidən yaratmağa qadirdir.
Mərkəzləşdirilmiş Versiya Nəzarət Sistemləri
İnsanların qarşılaşdığı əsas problemlərdən biri də budur ki, onlara digər sistemlərdəki developerlərlə bir işləmək lazım olur. Bu problemlə başa çıxmaq üçün, Mərkəzləşdirilmiş Versiya Nəzarət Sistemləri (MVNS) yaradılmışdır. Bu sistemlər(CVS, Subversion və Perforce kimiləri) bütün versiyalanmış faylların saxlandığı tək bir serverə və həmin mərkəzləşdirilmiş yerdən fayllara baxan bir neçə müştəriyə sahib olurlar Bir neçə illərdir ki, versiya nəzarəti üçün bu bir standart olmuşdu.
![Mərkəzləşdirilmiş versiya nəzarəti diaqramı](png/centralized.png)
Bu quruluş bir çox üstünlüyə sahibdir, xüsusiylə lokal VNS’lərdən. Məsələn, hamı bir-birinin proyekt üzərində hansı dərəcədə iş gördüyünü bilir. İdarəedicilərin kimin nə edə biləcəyinə dair yaxşı nəzarəti var və mərkəzləşdirilmiş nəzarət sistemlərini idarə etmək, hər müştəridəki müxtəlif lokal verilənlər bazalarını idarə etməkdən daha asandır.
Buna baxmayaraq, bu quruluşun həm də bəzi ciddi mənfi yönləri var. Ən barizi, mərkəzləşdirilmiş serverin təmsil etdiyi tək nöqsan nöqtəsidir. Əgər bu server 1 saatlığına çökərsə, həmin 1 saat ərzində heç kim heç bir işbirliyi görə bilməz ya da öz işlədikləri versiyalanmış dəyişiklikləri yadda saxlaya bilməz. Əgər mərkəzləşdirilmiş verilənlər bazasındakı sərt disk zədələnərsə və lazımi ehtiyatlar alınmaıbsa, siz hər şeyi itirirsiniz — insanların öz lokal komputerlərində saxladığı anlıq vəziyyətlərdən başqa proyektin bütün tarixi. Lokal versiya nəzarət sistemləri də eyni problemdən əziyyət çəkirlər — proyektin bütün tarixinin bir yerdə olduğu bütün vaxt ərzində siz hərşeyi itirmək riskinə gedirsiniz.
Paylanmış Versiya Nəzarət Sistemləri
Burada işə Paylanmış Versiyaya Nəzarət Sistemləri (PVNS)lər qarışır. PVNS’də (Git, Mercurial, Bazaar ya da Darcs kimi), müştərilər sadəcə faylların anlıq vəziyyətini yadda saxlamır; bunun əvəzinə, onlar bütün anbarı fayllarının bütün tarixçəsi ilə bərabər olaraq kopyasını götürürlər. Beləliklə, əgər server çökərsə və sistemlər həmin serverlə iş birliyi görürlərsə, müştərilərdəki anbarlardan hansısa biri serverə geri kopyalanaraq onu əvvəlki vəziyyətinə qaytara bilər.
Hər bir klon, həqiqətən də bütün məlumatın tam ehtiyatıdır.
![Paylanmış versiya nəzarəti diaqramı](png/distributed.png)
Bundan başqa, bir çox sistemlər, bir çox uzaq anbarlarla rahat işləyə bilirlər, beləliklə, siz eyni proyektdə fərqli insanlar qrupu ilə müxtəlif yollarla işbirliyi edə bilərsiniz. Bu sizə ierarxik modellərdə olduğu kimi mərkəzləşdirilmiş sistemlərdə mümükün olmayan müxtəlif iş görmək metodlarını quraşdırmağa imkan verəcək.