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,Csą na branchumain - Commity
D,Esą tylko nafeature-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! 🌿