11.1 Gałęzie w git
Praca z gałęziami (branches)
w Git to jeden z kluczowych aspektów zarządzania wersjami, który pozwala równolegle prowadzić kilka linii rozwoju w jednym repozytorium. Rozgałęzienie czyni Git potężnym narzędziem do współpracy, eksperymentów i zarządzania różnymi wersjami projektu.

Możesz myśleć o gałęziach w Git jako o folderach, gdzie Git kopiuje twój projekt. Masz główny folder swojego projektu w lokalnym repozytorium
— master
. Git może stworzyć kopie tego folderu, byś mógł eksperymentować bez ryzyka uszkodzenia głównego kodu. Takie foldery-kopie nazywane są gałęziami — branches
.
Gałęzie to alternatywne wersje kodu. Załóżmy, że chcesz coś zmienić w dużym projekcie lub przeprowadzić eksperyment, co do którego nie jesteś całkowicie pewien. Co byś zrobił bez Git?
Można skopiować projekt do nowego folderu i spróbować zmienić wszystko tam. Jeśli efekt Ci się spodoba, można skopiować go do głównego folderu. Jeśli nie — zapomnieć o nim lub po prostu usunąć.
Zajrzyjmy na przykład z życia, np. pisanie książki:
- Masz rękopis książki (główna gałąź).
- Decydujesz się spróbować zmienić zakończenie (tworzenie nowej gałęzi).
- Piszesz nowe zakończenie w osobnym dokumencie (praca w nowej gałęzi).
- Jeśli nowe zakończenie okaże się lepsze, zastąpisz stare w rękopisie (łączenie gałęzi).
- Usuwasz dokument z nowym zakończeniem (usunięcie gałęzi).
11.2 Tworzenie gałęzi
Tworzenie gałęzi w PyCharm jest bardzo proste.

Wpisz nazwę gałęzi.

PyCharm od razu wyświetli nazwę twojej bieżącej gałęzi na górze w menu:

Co było wcześniej?
Wcześniej wyświetlała się nazwa twojej pierwszej i głównej gałęzi — master
.
Teraz wyświetla się test
, co oznacza, że Git (pod przewodnictwem PyCharm) nie tylko stworzył nową gałąź, ale i od razu na nią się przełączył.
Dodajmy jakiś kod do pliku main.py
bieżącej gałęzi (test)
i zatwierdźmy go.

11.3 Przełączanie się między gałęziami
Krok 1. Wybierz gałąź.
Teraz przełączmy się na naszą starą gałąź. Kliknij w górnym menu i co tam widzimy?

Nie ma co się pogubić — to bardzo proste:
Local
— to lista gałęzi twojego lokalnego repozytorium git; tutaj są dwie:
test
master
Remote
— to twoje zdalne repozytorium, które znajduje się na serwerze GitHub. Wysłaliśmy tam twoje zmiany, ale nowej gałęzi tam nie ma, co jest logiczne. Zdalne repozytorium nosi nazwę origin, i ma tylko gałąź master
.
Recent
— to lista nazw ostatnich gałęzi, z którymi pracowałeś. Ten punkt dodano w PyCharm dla wygody i szybkości.
Nazwa origin/master
po prawej stronie od nazwy lokalnego repozytorium to nazwa zdalnego repozytorium, z którym teraz jest zsynchronizowane i do którego będą wysyłane zmiany.
Krok 2. — Przeładowujemy kod gałęzi do bieżącego folderu.

Krok 3. Sprawdzamy:.
U mnie wyświetla się gałąź (master)
i stary kod.

11.4 Łączenie gałęzi
Spróbujmy teraz połączyć kod z naszych dwóch gałęzi.
Krok 1. Na początek dodajmy do naszego projektu jeszcze jeden plik — init.py i napiszmy w nim jakiś kod.
- Tworzymy plik init.py
- Piszemy w nim kod print("Cześć")
- Zatwierdzamy plik.
Oto jak wyglądają dwa moje pliki w gałęzi master
:

Krok 2. Łączenie gałęzi.
Wlejemy do naszej bieżącej gałęzi (master)
zmiany, które zostały dokonane w gałęzi test
.
W tym celu również skorzystamy z górnego menu i polecenia «Merge ‘test’ into ‘master’»
.

Krok 3. Sprawdzamy wynik:.

Sprawdzamy:
- Na górze nadal wyświetlana jest gałąź
master
- Mamy dwa pliki: init.py i main.py
- Plik main.py zawiera kod, który został dodany w gałęzi
test
.
11.5 Konflikty podczas łączenia
Czasem podczas łączenia gałęzi pojawiają się konflikty.
Jeśli wprowadzisz zmiany w jednym pliku w różnych gałęziach i spróbujesz je połączyć, może pojawić się konflikt.
Konflikt plików tekstowych
Git to bardzo inteligentny system, rozpoznaje typy plików. Jeśli wprowadzisz zmiany w różnych miejscach plików, które uważa za tekstowe, po prostu przeniesie zmiany z jednego pliku do drugiego we właściwe miejsce, jakby to zrobił człowiek.
Konflikt plików binarnych
Ale jeśli wprowadzisz zmiany w obrazku lub dokumencie, Git nie będzie próbował łączyć ich części w jeden plik, po prostu zaproponuje ci wybór, którą wersję pliku chcesz zachować w bieżącej gałęzi.
Ręczne rozwiązywanie konfliktów:
Jeśli wprowadzisz zmiany w tym samym miejscu pliku tekstowego, Git nie będzie w stanie poprawnie połączyć różnych wersji i zaproponuje ci to zrobić.

Tak może to wyglądać:

Co tu widzisz:
- Z lewej zawartość pliku main.py z gałęzi master
- Z prawej zawartość pliku main.py z gałęzi
test
- W środku PyCharm proponuje ci napisać finalną wersję kodu (można kliknąć przyciski
«>>»
i«<<»
, by automatycznie wkleić zmiany z jednego z plików).
Przyjąłem wersję master
i dopisałem kod ręcznie. Oto co mi wyszło.

11.6 Historia zmian
Coś jeszcze przydatnego i ciekawego: możesz zobaczyć historię zmian dowolnego pliku, klikając przycisk Show History
. Istnieją dwa miejsca, gdzie można ją znaleźć — znajdź je.
Tak wygląda historia zmian u mnie dla pliku main.py:

Wyjaśnienia:
- Z lewej widzisz historię zmian konkretnego pliku:
- Im nowsza zmiana, tym jest wyżej; im starsza — tym niżej.
- Tu również wyświetla się historia łączenia gałęzi.
- Z prawej — zmiany, które zostały wprowadzone w konkretnym commicie.
GO TO FULL VERSION