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:
testmain
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.pyfaylı 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ə
mainbranch göstərilir - İki faylımız var:
init.pyvəmain.py -
main.pyfaylıtestbranch-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
mainbranch-ninmain.pyfaylının məzmunu - Sağda
testbranch-inmain.pyfaylı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