Git: usuwanie lokalnej gałęzi
Ostatnia aktualizacja
Gdy praca z gałęzi jest już scalona, usuwasz ją przez git branch -d <branch>. Git odmówi, jeśli gałąź ma commity, które nie są nigdzie scalone: to zabezpieczenie. Żeby usunąć ją mimo to, użyj wielkiego -D. Usunięcie lokalnej gałęzi nigdy nie rusza jej kopii w repozytorium zdalnym; do tego służy osobne polecenie.
Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.
Składnia
| Polecenie | Co robi |
|---|---|
git branch -d feature | Usuwa feature (tylko jeśli jest scalona) |
git branch -D feature | Wymusza usunięcie feature, nawet niescalonej |
git branch -d branch1 branch2 | Usuwa kilka gałęzi naraz |
Typowe przypadki
| Cel | Polecenie |
|---|---|
| Usunąć scaloną gałąź | git branch -d old-feature |
| Wymusić usunięcie niescalonej gałęzi | git branch -D scratch |
| Usunąć gałąź, na której jesteś | git switch main, potem git branch -d feature |
| Sprawdzić, które gałęzie są scalone | git branch --merged |
Przykład krok po kroku
Skończ funkcję, scal ją i posprzątaj lokalną gałąź.
| Krok | Polecenie | Wynik |
|---|---|---|
| 1 | git switch main | Zejdź z gałęzi, którą chcesz usunąć |
| 2 | git merge feature | Przenieś commity funkcji do main |
| 3 | git branch -d feature | Usuń już scaloną gałąź |
Najczęstsze pytania o usuwanie lokalnej gałęzi
Czym różni się git branch -d od -D?
-d to bezpieczne usuwanie: Git usuwa gałąź tylko wtedy, gdy jej commity są już scalone z inną gałęzią, więc nie stracisz pracy przez przypadek. -D to wymuszone usuwanie (skrót od --delete --force): usuwa gałąź bez względu na wszystko, nawet jeśli ma niescalone commity. Domyślnie używaj -d, a po -D sięgaj tylko wtedy, gdy na pewno chcesz wyrzucić commity z tej gałęzi.Jak usunąć gałąź, na której aktualnie jestem?
git switch main (albo git checkout main), a potem uruchom git branch -d feature. Próba usunięcia bieżącej gałęzi kończy się błędem "Cannot delete branch ... checked out".Czy usunięcie lokalnej gałęzi usuwa ją też na GitHubie?
git branch -d usuwa gałąź tylko z lokalnego repozytorium. Gałąź w repozytorium zdalnym (GitHub, GitLab itp.) zostaje, dopóki nie usuniesz jej osobno przez git push origin --delete feature.Czy da się odzyskać usuniętą gałąź?
git reflog, żeby znaleźć commit, na który wskazywała gałąź, a potem odtwórz ją przez git branch feature <commit-hash>. Commity nie są od razu usuwane przez garbage collector, więc gałąź usuniętą przez pomyłkę zwykle da się przywrócić.