git switch to nowoczesny sposób na przełączanie się między gałęziami w repozytorium Git. Pojawił się w Git 2.23 (2019) jako czytelniejsza alternatywa dla przeciążonego git checkout — twórcy Gita rozbili stary kombajn na dwa narzędzia: git switch do gałęzi i git restore do plików. Dzięki temu od razu wiadomo, co robisz: zmieniasz gałąź, na której pracujesz, a nie przypadkiem nadpisujesz plik. Jeśli dopiero uczysz się Gita, warto przyzwyczaić się do switch — robi jedną rzecz i robi ją zrozumiale.
Składnia i najważniejsze opcje
Podstawowa forma: git switch [-c
-c— tworzy nową gałąź i od razu się na nią przełącza (odpowiednikcheckout -b).-C— to samo co-c, ale jeśli gałąź już istnieje, resetuje ją do punktu startowego. Działa na siłę, więc uważaj.-d,--detach— przełącza w tryb „detached HEAD”, czyli stajesz na konkretnym commicie bez gałęzi. Dobre do oględzin, złe do pracy (nowe commity łatwo zgubić).--orphan— tworzy zupełnie pustą gałąź bez historii i bez plików ze starej.-t,--track— przy tworzeniu gałęzi ustawia śledzenie zdalnej gałęzi (upstream).--discard-changes— wymusza przełączenie, porzucając lokalne, niezacommitowane zmiany. Nieodwracalne.-— myślnik jako argument wraca na poprzednią gałąź (jakcd -).
Przykłady użycia
git switch main— przełącza Cię na gałąźmain.git switch -c feature/logowanie— tworzy gałąźfeature/logowaniei od razu na nią wchodzi.git switch -c hotfix main— tworzyhotfixwyrastający zmain, niezależnie od tego, gdzie aktualnie jesteś.git switch -— wraca na poprzednią gałąź, na której byłeś.git switch feature/x— gdy taka gałąź istnieje tylko na jednym zdalnym repo, Git sam utworzy lokalną kopię śledzącą zdalną (zachowanie „guess”).
Częste błędy i pułapki
Masz niezacommitowane zmiany. Jeśli przełączenie nadpisałoby Twoją pracę, Git przerwie operację z błędem. Zacommituj, użyj git stash, albo świadomie porzuć zmiany przez --discard-changes (ostatecznie). Nie wal od razu flagą porzucania — najpierw sprawdź git status.
Detached HEAD. Po git switch --detach commity, które zrobisz, nie należą do żadnej gałęzi i po przełączeniu mogą zniknąć z radaru. Jeśli chcesz je zachować, utwórz gałąź: git switch -c .
Stara wersja Gita. Na serwerach z Gitem starszym niż 2.23 git switch w ogóle nie istnieje — zostaje git checkout. Sprawdź wersję: git --version.
Powiązane komendy: git checkout, git restore, git branch, git stash, git merge.