-
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
A1.1 Appendix A: Digər Mühitlərdə Git - Qrafik interfeyslər
Kitabın hamısını oxumusunuzsa, əmr sətrində Git’in necə istifadə ediləcəyi barədə çox şey öyrəndiniz. Lokal fayllarla işləyə, deponuzu bir şəbəkə vasitəsilə başqalarına bağlaya və başqaları ilə səmərəli işləyə bilərsiniz. Ancaq hekayə bununla bitmir; Git ümumiyyətlə daha böyük bir ekosistemin bir hissəsi kimi istifadə olunur və terminal həmişə onunla işləmək üçün ən yaxşı yol deyil. İndi Git’in faydalı ola biləcəyi bəzi digər mühitlərə və digər tətbiqetmələrin (sizin də daxil olmaqla) Git ilə necə işlədiyinə nəzər salacağıq.
Qrafik interfeyslər
Gitin yerli mühiti terminaldadır. Əvvəlcə yeni xüsusiyyətlər ortaya çıxır və yalnız komanda xəttində Gitin tam gücü tamamilə sizin ixtiyarınızdadır. Ancaq düz mətn bütün tapşırıqlar üçün ən yaxşı seçim deyil; bəzən vizual bir nümayəndəlik sizə lazım olan şeydir və bəzi istifadəçilər point-and-click interfeysi ilə daha rahatdırlar.
Fərqli interfeyslərin fərqli iş axınlarına uyğunlaşdırıldığını qeyd etmək vacibdir. Bəzi müştərilər müəllifin effektiv hesab etdiyi xüsusi bir iş üsulunu dəstəkləmək üçün yalnız diqqətlə hazırlanmış Git funksionallığının alt hissəsini ifşa edirlər. Bu işığa baxıldıqda, bu vasitələrin heç birinə digərlərindən “daha yaxşı” olduğu deyilə bilməz, sadəcə məqsədləri üçün daha uyğun olurlar. Bu qrafik müştərilərin əmr sətri müştərisinin edə bilməyəcəyi bir şey olmadığına da diqqət yetirin; əmr sətri, depolarınızla işləyərkən ən çox gücə və nəzarətə sahib olacağınız yerdir.
gitk
və git-gui
Git’i quraşdırdığınızda, vizual alətləri, gitk
və git-gui
-də əldə edirsiniz.
gitk
qrafik tarixçəsi görüntüləyicisidir.
Bunu git log
və git grep
üzərində güclü bir GUI shell-i kimi düşünün.
Keçmişdə baş verən bir şey tapmağa çalışarkən istifadə etdiyiniz və ya layihənizin tarixini görselleştiren bu vasitədir.
Gitk-i əmr sətrindən çağırmaq asandır.
Yalnız bir Git deposuna cd
yazın:
$ gitk [git log options]
Gitk, bir çox komanda xətti seçimini qəbul edir, bunların əksəriyyəti əsas git log
əməliyyatına ötürülür.
Bunlardan ən çox faydalı olan flag-larından biri --all
-dur, hansı ki gitk-in yalnız HEAD deyil, hər ref-dən əldə edilə bilən işləri göstərməsini söyləyir..
Gitk interfeysi belə görünür:
![`gitk` tarixçəsi](png/gitk.png)
gitk
tarixçəsiYuxarıda bir az git log --graph
çıxışına bənzəyən bir şey var; hər nöqtə bir commit-i, sətirlər valideyn münasibətlərini və reflər rəngli qutular şəklində göstərilir.
Sarı nöqtə HEAD-i, qırmızı nöqtə isə commit-ə çevrilməli olan dəyişiklikləri təmsil edir.
Aşağıda seçilmiş commit-in görünüşü var; sol tərəfdəki şərhlər və patch, sağdakı summary görünüşü.
Arada tarix axtarmaq üçün istifadə edilən nəzarət toplusu var.
Digər tərəfdən, git-gui
, ilk növbədə commit-lərin hazırlanması üçün bir vasitədir.
Əmr sətrindən çağırmaq da asandır:
$ git gui
Və bu belə görünür:
![`git-gui` commit tool](png/git-gui.png)
git-gui
commit toolSolda indeks var; unstaged dəyişikliklər üstdə, staged dəyişikliklər altındadır. İconlara click edərək iki vəziyyət arasında bütün faylları hərəkət etdirə və ya adını click edərək görüntüləmək üçün bir sənəd seçə bilərsiniz.
Sağ üstdə hazırda seçilmiş fayl üçün dəyişiklikləri göstərən diff görünüşü var. Bu ərazidə sağ click edərək fərdi ovları (və ya fərdi xətləri) səhnələşdirə bilərsiniz.
Sağ altda mesaj və action sahəsi var.
Mesajınızı mətn qutusuna yazın və git commit
-ə bənzər bir şey etmək üçün “Commit” düyməsini basın.
Ayrıca, “Staged Changes” sahəsini son commit-in məzmunu ilə yeniləyəcək olan “Amend” radio düyməsini seçərək son commit-ə düzəliş edə bilərsiniz.
Sonra sadəcə bəzi dəyişiklikləri stage və ya unstage, commit mesajını dəyişdirə və köhnə commit-i yenisi ilə əvəz etmək üçün yenidən “Commit” düyməsinə basa bilərsiniz.
gitk
və git-gui
task-oriented vasitələrin nümunələridir.
Hər biri müəyyən bir məqsəd üçün hazırlanmışdır (müvafiq olaraq tarixə baxmaq və commit-lər yaratmaq) və bu tapşırıq üçün lazım olmayan xüsusiyyətləri buraxmaq.
MacOS və Windows üçün GitHub
GitHub, iki iş axını yönümlü Git müştəri yaratdı: biri Windows, digəri macOS üçün. Bu müştərilər iş axını yönümlü alətlərin yaxşı bir nümunəsidir - Git-in işləkliyini ortaya qoymaqdansa, əksinə, birlikdə işləyən, geniş yayılmış istifadə olunan xüsusiyyətlərə diqqət yetirirlər. Bunlar belə görünür:
![GitHub macOS üçün](png/github_mac.png)
![GitHub Windows üçün](png/github_win.png)
Çox oxşar görünmək və işləmək üçün hazırlanmışdır, buna görə bu hissədə onları bir məhsul kimi nəzərdən keçirəcəyik. Bu alətlər barədə ətraflı bir baxış keçirməyəcəyik (öz sənədləri var), ancaq "dəyişikliklər" görünüşünə (vaxtınızın çox hissəsini sərf edəcəyiniz) sürətli bir tura çıxmağa dəyər.
-
Solda müştərinin izlədiyi depoların siyahısı; bu sahənin yuxarı hissəsindəki “+” iconunu click edərək (yerli olaraq klonlama və ya əlavə etməklə) bir depo əlavə edə bilərsiniz.
-
Mərkəzdə bir commit mesajı daxil etməyə imkan verən və hansı faylların daxil edilməli olduğunu seçən bir commit-input sahəsi var. Windows-da, commit tarixçəsi birbaşa bunun altında göstərilir; macOS-da ayrı bir bölmədə var.
-
Sağda iş qovluğunda nəyin dəyişdirildiyini və ya seçilmiş commit-ə hansı dəyişikliklərin daxil edildiyini göstərən fərqli bir görünüş var.
-
Diqqət yetirən son şey, şəbəkə üzərindəki qarşılıqlı əlaqənin əsas üsulu olan yuxarı sağdakı “Sync” düyməsidir.
Note
|
Bu alətlərdən istifadə etmək üçün bir GitHub hesabına ehtiyacınız yoxdur. GitHub xidmətini və tövsiyə olunan iş axınını vurğulamaq üçün nəzərdə tutulsa da, hər hansı bir depo ilə məmnuniyyətlə işləyəcək və istənilən Git host ilə şəbəkə əməliyyatları aparacaqlar. |
Quraşdırma
Windows üçün GitHub, https://windows.github.com, MacOS üçün GitHub isə https://mac.github.com saytından yüklənə bilər. Tətbiqlər ilk dəfə işə salındıqda adınızı və e-poçt adresinizi konfiqurasiya etmək kimi ilk dəfə Git quraşdırılmasını həyata keçirir və hər ikisi credential caches və CRLF davranışı kimi bir çox ümumi konfiqurasiya variantları üçün ağlabatan standart parametrləri quraşdırırlar.
Hər ikisi də “evergreen”-dır - yeniləmələr yüklənir və tətbiqlər açıq vəziyyətdə arxa planda quraşdırılır. Bu, faydalı şəkildə Git-in paketli bir versiyasını ehtiva edir, yəni manual yeniləməkdən narahat olmayacağınız mənasını verir. Windows-da müştəri PowerShell-i Posh-git ilə işə salmaq üçün bir qısayol daxildir və bu bölmədə daha sonra danışacağıq.
Növbəti addım alətə işləmək üçün bəzi depolar verməkdir. Müştəri sizə GitHub’da girə biləcəyiniz depoların siyahısını göstərir və onları bir addımda klonlaya bilər. Yerli bir deposunuz varsa, yalnız qovluğunu Finder və ya Windows Explorer-dən GitHub müştəri pəncərəsinə sürükləyin və soldakı depolar siyahısına daxil ediləcək.
Recommended Workflow
Quraşdırıldıqdan və konfiqurasiya edildikdən sonra, bir çox ümumi Git tapşırıqları üçün GitHub müştərisini istifadə edə bilərsiniz. Bu alət üçün nəzərdə tutulan iş axını bəzən “GitHub Flow” adlanır. Bunu GitHub Axını-də daha ətraflı şəkildə izah edirik, lakin ümumi fikir budur ki, (a) bir branch-a sadiq qalacaqsınız və (b) bir uzaqdan idarəedici cihazla sinxronizasiya olunacaqsınız.
Branch management iki vasitənin ayrıldığı sahələrdən biridir. MacOS-da, yeni bir branch yaratmaq üçün pəncərənin yuxarı hissəsində bir düymə var:
![``Create Branch'' button macOS-da](png/branch_widget_mac.png)
Windows-da, bu branch dəyişən widget-a yeni branch-ın adını yazaraq edilir:
![Windows-da bir branch yaratmaq](png/branch_widget_win.png)
Branch-ınız yaradıldıqdan sonra yeni commit-lər götürmək kifayət qədər sadədir. İş qovluğunuzda bəzi dəyişikliklər edin və GitHub müştəri pəncərəsinə keçdiyiniz zaman hansı sənədlərin dəyişdirildiyini sizə göstərəcəkdir. Commit mesajı daxil edin, daxil etmək istədiyiniz sənədləri seçin və “Commit” düyməsini basın (ctrl-enter və ya ⌘-enter).
Şəbəkə üzərindəki digər depolar ilə qarşılıqlı əlaqənizin əsas yolu “Sync” xüsusiyyətidir. Git daxili olaraq pushing, fetching, merging, and rebasing üçün ayrı əməliyyatlara sahibdir, lakin GitHub müştəriləri bunların hamısını çoxpilləli bir xüsusiyyətə çevirir. Sinxronizasiya düyməsini basdıqda nə baş verir:
-
git pull --rebase
. Birləşmə konflikti səbəbindən bu uğursuz olarsa,git pull --no-rebase
vəziyyətinə qayıdın. -
git push
.
Bu üslubda işləyərkən şəbəkə əmrlərinin ən çox yayılmış ardıcıllığıdır, buna görə onları bir əmrdə sıxmaq çox vaxta qənaət edir.
Qısa Məzmun
Bu alətlər, dizayn etdikləri iş axını üçün çox uyğundur. Developers və non-developers bir neçə dəqiqə ərzində bir layihədə əməkdaşlıq edə bilərlər və bu cür iş axını üçün ən yaxşı təcrübələrin çoxu alətlərə bişirilir. Developers and non-developers alike can be collaborating on a project within minutes, and many of the best practices for this kind of workflow are baked into the tools. Bununla birlikdə, iş axınınız fərqlidirsə və ya şəbəkə əməliyyatlarının necə və nə vaxt ediləcəyinə daha çox nəzarət etmək istəyirsinizsə, başqa bir müştəri və ya əmr satırından istifadə etməyinizi məsləhət görürük.
Başqa GUI-lər
Bir sıra başqa qrafik Git müştəriləri var və onlar Gitin edə biləcəyi hər şeyi ortaya qoymağa çalışan tətbiqetmələrə qədər xüsusi, tək məqsədli vasitələrdən istifadə edirlər. Rəsmi Git veb saytında https://git-scm.com/downloads/guis saytında ən populyar müştərilərin seçilmiş siyahısı var. Daha əhatəli bir siyahı Git wiki saytında, https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces saytında mövcuddur.