Branches (Gałęzie) w Git

1. Wprowadzenie

Branch (gałąź) to jedna z najważniejszych funkcji Git. Pozwala na tworzenie niezależnych linii rozwoju projektu, co umożliwia:

  • Pracę nad nową funkcją bez wpływu na główny kod
  • Eksperymentowanie bez ryzyka
  • Równoległą pracę wielu osób
  • Izolację zmian do czasu ich ukończenia

2. Czym jest branch?

Branch to wskaźnik na konkretny commit. Domyślnie Git tworzy branch main (wcześniej master).

Wizualizacja:

main:  A -- B -- C -- D

Każda litera to commit, a main wskazuje na commit D (najnowszy).


3. Podstawowe komendy branches

3.1. Wyświetlenie branchy

Output:

* main
  feature-login
  bugfix-form

Gwiazdka * oznacza aktualny branch.

3.2. Tworzenie nowego brancha

Przykład:

To NIE przełącza Cię na nowy branch, tylko go tworzy.

3.3. Przełączanie się między branchami

Przykład:

Nowsza składnia (Git 2.23+):

3.4. Tworzenie i przełączanie jednocześnie

Lub nowsza składnia:

Przykład:


4. Praktyczny przykład

Krok 1: Sprawdź aktualny branch

Output:

* main

Krok 2: Utwórz nowy branch

Output:

Switched to a new branch 'feature-contact-form'

Krok 3: Sprawdź ponownie

Output:

  main
* feature-contact-form

Krok 4: Pracuj na nowym branchu

Krok 5: Wróć do main

Zauważ, że plik contact.html zniknął! Jest tylko na branchu feature-contact-form.

Krok 6: Przełącz się z powrotem

Plik contact.html wraca! 🎉


5. Wizualizacja branchy

       main:  A -- B -- C
                       \
feature-login:           D -- E
  • Commity A, B, C są na branchu main
  • Commity D, E są tylko na feature-login

6. Scenariusze użycia branchy

6.1. Nowa funkcja (feature branch)

6.2. Naprawa błędu (bugfix branch)

6.3. Eksperyment


7. Usuwanie branchy

7.1. Usunięcie lokalnego brancha

Przykład:

Błąd, jeśli branch nie zmergowany:

error: The branch 'feature-contact-form' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature-contact-form'.

7.2. Wymuś usunięcie


8. Zmiana nazwy brancha

8.1. Zmiana nazwy aktualnego brancha

8.2. Zmiana nazwy innego brancha

Przykład:


9. HEAD - co to jest?

HEAD to wskaźnik na aktualny commit (zazwyczaj na koniec brancha).

Output:

abc1234 (HEAD -> feature-login) Dodanie logowania
xyz7890 (main) Inicjalizacja projektu

HEAD -> feature-login oznacza, że jesteś na branchu feature-login.


10. Detached HEAD

Jeśli przełączysz się na konkretny commit (zamiast na branch), dostajesz detached HEAD:

Output:

You are in 'detached HEAD' state...

Rozwiązanie:


11. Porównywanie branchy

11.1. Różnice między branchami

11.2. Lista commitów różniących branche

11.3. Pliki różniące się między branchami


12. Strategie nazewnictwa branchy

12.1. Popularne konwencje

Typ Przykład Opis
Feature feature/login Nowa funkcja
Bugfix bugfix/form-validation Naprawa błędu
Hotfix hotfix/security-patch Pilna naprawa
Refactor refactor/api-structure Refaktoryzacja
Test test/unit-tests Testy
Docs docs/readme-update Dokumentacja

12.2. Przykłady dobrych nazw

Dobrze:

feature/user-authentication
bugfix/payment-error
hotfix/security-vulnerability
refactor/database-queries

Źle:

new-stuff
fix
test123
branch1

13. Workflow z branchami

Typowy workflow:


14. Praktyczny przykład: Strona z wieloma funkcjami


15. Aliasy dla branchy

Dodaj skróty do .gitconfig:

Użycie:


16. Sprawdzanie statusu brancha

16.1. Commity na branchu

16.2. Branch tracking (śledzenie zdalnego brancha)

Output:

* main abc1234 [origin/main] Ostatni commit
  feature def5678 Commit na feature

17. Przydatne komendy


18. Cheatsheet - Branches

Komenda Opis
git branch Lista branchy
git branch nazwa Utwórz branch
git checkout nazwa Przełącz na branch
git checkout -b nazwa Utwórz i przełącz
git switch nazwa Przełącz (nowsza składnia)
git switch -c nazwa Utwórz i przełącz (nowsza)
git branch -d nazwa Usuń branch
git branch -D nazwa Wymuś usunięcie
git branch -m nowa Zmień nazwę
git log --graph --all Wizualizacja branchy

19. Częste błędy

Błąd 1: Niezacommitowane zmiany przy przełączaniu

Błąd:

error: Your local changes to the following files would be overwritten by checkout:
    file.txt
Please commit your changes or stash them before you switch branches.

Rozwiązanie:

Błąd 2: Usuwanie aktualnego brancha

Rozwiązanie:


20. Podsumowanie

Branches to potężne narzędzie w Git:

  • ✅ Pozwalają na równoległą pracę nad wieloma funkcjami
  • ✅ Izolują zmiany od głównego kodu
  • ✅ Umożliwiają eksperymenty bez ryzyka
  • ✅ Ułatwiają code review

Podstawowy workflow:

1. git checkout -b feature/new    # Utwórz branch
2. ... praca nad funkcją ...
3. git add . && git commit        # Commituj
4. git checkout main              # Wróć na main
5. git merge feature/new          # Zmerguj (następna lekcja)
6. git branch -d feature/new      # Usuń branch

Co dalej:

  • Lekcja 5 – Merge i rozwiązywanie konfliktów
  • Lekcja 6 – Praca z GitHub i zdalnymi repozytoriami

Gratuluję! Opanowałeś branche w Git! 🌿