11.1 Git-də şaxələr
Git-də şaxələrlə branches
işləmək — bu, versiyaların idarə olunmasının əsas elementlərindən biridir və bir repositorda bir neçə inkişaf xəttini paralel aparmağa imkan verir. Şaxələnmə, Git-i əməkdaşlıq, eksperimentlər və layihənin müxtəlif versiyalarının idarə olunması üçün güclü vasitə edir.

Git-də şaxələri qovluq olaraq təsəvvür edə bilərsiniz, burada Git sizin layihənizi kopyalayır. Sizin əsas layihə qovluğunuz sizin lokal repositori
-də qoyulmuşdur — main
. Git bu qovluğu kopyalayıb sizə eksperimentlər etməyə imkan yaradır, əsas, yaxşı işləyən kodu riskə atmadan. Bu cür kopya-qovluqlar şaxələr — branches
adlanır.
Şaxələr — kodun alternativ versiyalarıdır. Fərz edək ki, siz böyük bir layihədə nəyisə yenidən düzəltmək istəyirsiniz və ya tam əmin olmadığınız bir eksperiment aparmaq istəyirsiniz. Git olmadan nə edərdiniz?
Layihəni yeni bir qovluqda kopyalayıb, orada hər şeyi dəyişə bilərdiniz. Əgər nəticəni bəyənsəniz, əsas qovluğa kopyalaya bilərsiniz. Əgər bəyənməsəniz — onu unuda və ya ümumiyyətlə silə bilərsiniz.
Gəlin həyatdan bir nümunəyə baxaq, məsələn, kitab yazmaq:
- Sizin kitabınızın əlyazması var (əsas şaxə).
- Siz sonluğu dəyişməyə qərar verirsiniz (yeni bir şaxə yaradılması).
- Yeni sonluğu ayrı bir sənəddə yazırsınız (yeni şaxədə işləmək).
- Əgər yeni sonluq daha yaxşıdırsa, köhnəni əlyazmada əvəz edirsiniz (şaxələrin birləşdirilməsi).
- Yeni sonluq sənədini silirsiniz (şaxənin silinməsi).
11.2 Branch yaratma
PyCharm-da branch yaratmaq çox asandır.

Branch'in adını daxil edin.

PyCharm dərhal yuxarı menyuda sizin cari branch'inizin adını göstərəcək:

Əvvəl nə idi?
Əvvəllər sizin ilk və əsas branch'izin adı — main
görünürdü.
İndi isə test
görünür, bu isə onu göstərir ki, Git (PyCharm rəhbərliyində) təkcə yeni bir branch yaratmayıb, həm də dərhal ona keçid edib.
Hazırkı test
branch'dəki main.py
faylına hər hansı bir kod əlavə edək və onu commit edək.

11.3 Şaxələr arasında keçid
1-ci addım. Şaxəni seçirik.
İndi isə köhnə şaxəmizə keçək. Yuxarı menyuya klik edin və orada nə görürük?

Çaşmayın — hər şey çox sadədir:
Local
— bu sizin lokal git-repozitoriyanızın şaxələrinin siyahısıdır; burada iki dənə var:
test
main
Remote
— bu isə serverdə yerləşən uzaqdan (remote) repozitoriyanızdır, o, GitHub-da yerləşir. Biz dəyişikliklərinizi ora göndərdik, amma orada yeni bir şaxə yoxdur, bu da məntiqlidir. Uzaqdan repozitoriyanın adı origin
-dir və orada yalnız main
şaxəsi var.
Recent
— bu isə ən son işlədiyiniz şaxələrin adlarının siyahısıdır. Bu bənd PyCharm-a rahatlıq və sürət üçün əlavə edilib.
Lokal repozitoriyanın adı yanında origin/main
uzaqdan repozitoriyanın adı - bu repozitoriya ilə sinxronlaşdırılıb və dəyişikliklərin ora göndəriləcəyi yerdir.
2-ci addım — Şaxənin kodunu cari qovluğa yükləyirik.

3-cü addım. Yoxlayırıq:.
Məndə main
və köhnə kod göstərilir.

11.4 Branch-lərin birləşdirilməsi

İndi isə gəlin kodumuzu iki branch-dən birləşdirək.
Addım 1. İlk öncə layihəmizə yeni bir fayl əlavə edək — init.py
və içərisində bir az kod yazaq.
init.py
faylı yaradılır- İçərisinə kod yazılır:
print("Hello repo")
- Fayl commiti edilir.
Bu, mənim main
branch-dəki iki faylımın necə göründüyüdür:

Addım 2. Branch-lərin birləşdirilməsi.
İndiki main
branch-ə test
branch-də edilən dəyişiklikləri merge edək.
Bunun üçün yuxarı menyudan Merge ‘test’ into ‘main’
əmri istifadə olunur.

Addım 3. Nəticəni yoxlayırıq:.

Yoxlayırıq:
- Yuxarıda hələ də
main
branch göstərilir - İki faylımız var:
init.py
vəmain.py
-
main.py
faylıtest
branch-də əlavə edilən kodu ehtiva edir.
11.5 Merge zamanı konfliklər
Bəzi hallarda branch-lərin birləşməsi zamanı konfliklər yaranır.
Əgər müxtəlif branch-lərdə eyni faylda dəyişiklik edərsinizsə və onları birləşdirməyə çalışsanız, konflikt yarana bilər.
Text faylların konflikti
Git çox ağıllı sistemdir, o, fayl tiplərindən baş çıxarır. Əgər text olaraq qəbul edilən faylların müxtəlif hissələrinə dəyişiklik edirsinizsə, o sadəcə bu dəyişiklikləri bir fayldan digərinə uyğun yerlərə yerləşdirəcək, sanki bunu insan edir.
Binary faylların konflikti
Amma əgər şəkil və ya sənədə dəyişiklik etsəniz, Git bu faylların hissələrini birləşdirməyə çalışmayacaq. O, sizdən soruşacaq ki, hansı versiyanı cari branch-də saxlamalı olduğunu seçəsiniz.
Konfliktlərin əl ilə həlli:
Əgər eyni text faylının eyni hissəsində dəyişiklik edirsinizsə, Git müxtəlif versiyaları düzgün birləşdirə bilmir və bunu sizin etməyinizi təklif edir.

Bu belə görünə bilər:

Burada nə görürsünüz:
- Solda
main
branch-ninmain.py
faylının məzmunu - Sağda
test
branch-inmain.py
faylının məzmunu - Ortada PyCharm sizə son kod versiyasını yazmağı təklif edir (siz
>>
və<<
düymələrinə klikləyərək, avtomatik olaraq fayllardan birinin dəyişikliklərini əlavə edə bilərsiniz).
Mən main
variantını qəbul etdim və kodu əl ilə tamamladım. Baxın, nətər alındı.

11.6 Dəyişikliklərin tarixi
Faydalı və maraqlı bir şey: istənilən faylın tarixini görə bilərsiniz, Show History
düyməsinə klikləyərək. Onun iki yeri ola bilər — tapmağa çalışın.
Mənim main.py faylı üçün dəyişikliklərin tarixi belə görünür:

Açıqlamalar:
- Solda siz konkret faylın dəyişiklik tarixini görürsünüz:
- Dəyişiklik nə qədər yeni olsa, o qədər yuxarıda olur; nə qədər köhnə olsa, bir o qədər aşağıda olur.
- Burada həmçinin branches-lərin birləşmə tarixini görə bilərsiniz.
- Sağda — konkret commit-də edilən dəyişikliklər göstərilir.
GO TO FULL VERSION