git switch

Przełącza między gałęziami (nowsza, czytelniejsza alternatywa dla checkout).

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 (odpowiednik checkout -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łąź (jak cd -).

Przykłady użycia

  • git switch main — przełącza Cię na gałąź main.
  • git switch -c feature/logowanie — tworzy gałąź feature/logowanie i od razu na nią wchodzi.
  • git switch -c hotfix main — tworzy hotfix wyrastający z main, 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.