Usuwanie lokalnego oddziału za pomocą Git

148

Poszukałem w Google i jest kilka bardzo długich wątków na ten temat i żaden z nich nie pomaga. Myślę, że robię coś złego. Mam oddział o nazwie Test_Branch. Kiedy próbuję go usunąć za pomocą zalecanej metody, pojawia się następujący błąd:

Nie można usunąć gałęzi „Test_Branch” wyewidencjonowanej w „[lokalizacja katalogu]”.

Poza tym nie mam żadnych innych informacji. Mogę łatwo zdmuchnąć zdalny oddział, ale lokalny oddział nie zniknie.

Bob Wakefield
źródło
Przy okazji, jestem zupełnie nowy w Git. Używam tylko przez ostatnie kilka dni. Ukończyłem kilka kursów online i przeczytałem kilka książek, ale odpowiedzi też tam nie ma.
Bob Wakefield,
Jeśli wykonasz git branch, co to mówi?
coredump
21
W obrazie, to jest to, co się dzieje: publicdomainpictures.net/pictures/10000/velka/...
Coredump
git branch daje mi * Test_Branch master
Bob Wakefield
Gwiazdka mówi, w której gałęzi aktualnie się znajdujesz, co potwierdza odpowiedzi
coredump

Odpowiedzi:

277

Przełącz się na inną gałąź i usuń Test_Branchw następujący sposób:

$ git checkout master
$ git branch -d Test_Branch

Jeśli powyższe polecenie powoduje błąd - The branch 'Test_Branch' is not fully merged. If you are sure you want to delete iti nadal chcesz go usunąć, możesz wymusić jego usunięcie za pomocą -Dzamiast-d , jak:

$ git branch -D Test_Branch

Aby usunąć również Test_Branchz pilota, wykonaj:

git push origin --delete Test_Branch
Arpit Aggarwal
źródło
36
Zamiana gałęzi była tym, co mnie dało - dobry chwyt! Nie możesz usunąć oddziału, jeśli jesteś w nim aktywny. ;-)
SliverNinja - MSFT
2
Jeśli spróbujesz kilku różnych płatności i nadal otrzymujesz ten sam komunikat, spójrz na wynik polecenia git statuslub git branch; jeśli zmieniasz bazę Test_branch, po prostu sprawdzenie innej gałęzi / zatwierdzenia tego nie naprawi. Zamiast git rebase --aborttego git checkout --detachi ostateczniegit branch -D Test_branch
droid
3
Kolejny dowód na to, że git oznacza „git is terrible”. Im częściej go używam, tym więcej tych absurdalnych obręczy musisz przeskoczyć. Zwłaszcza, że ​​prawdopodobnie chcesz od razu wrócić do tej samej gałęzi.
user949300,
A co jeśli ktoś otrzyma to w zamian, próbując zmienić oddział? error: you need to resolve your current index firsti po prostu chcą WYJŚĆ? EDYCJA - Rozwiązanie git reset --:; git checkout -D [branch_name]Uff ..
Paul
Musiałem uruchomić, git fetch --pruneponieważ usunąłem już oddział na zdalnym, ale nadal pojawiał się po git pullw git branch -a.
hipokito
21

Prawdopodobnie wyewidencjonowałeś Test_Branch i nie możesz go usunąć, gdy jest to Twoja bieżąca gałąź. Sprawdź inną gałąź, a następnie spróbuj usunąć Test_Branch.

Randy Leberknight
źródło
15

Wpadłem na to dzisiaj i przejście do innego oddziału nie pomogło. Okazało się, że w jakiś sposób informacje o moim drzewie roboczym uległy uszkodzeniu i istnieje drzewo robocze z tą samą ścieżką do folderu, co mój katalog roboczy, ze HEADwskazaniem na gałąź ( git worktree list). Usunąłem .git/worktree/folder, do którego się odnosił i git branch -ddziałał.

jinxcat2008
źródło
4

Jeśli utworzyłeś wiele drzew roboczych za pomocą git workktree , musisz uruchomić, git prunezanim będziesz mógł usunąć gałąź

dkniffin
źródło
3
dokładniej, będziesz musiał użyćgit worktree prune
Sergioet
ale przeczytaj, co robi git prune, najpierw - może doprowadzić do utraty danych
sesquipedalias Kwietnia
1

To zadziałało ...
Usunąłem tam foldery w folderze .git / worktrees, a następnie spróbowałem „git delete -D nazwa-gałęzi”.

Vasu
źródło
1

W moim przypadku pozostały niezatwierdzone zmiany z poprzedniej gałęzi. Użyłem następujących poleceń, a następnie usuwanie zadziałało.

git checkout *

git checkout master

git branch -D

Sankar Natarajan
źródło
0

Jak inni wspomnieli, nie możesz usunąć obecnego oddziału, w którym pracujesz.

W moim przypadku wybrałem „Test_Branch” w programie Visual Studio i próbowałem usunąć „Test_Branch” z Sourcetree (Git GUI). I wyświetlał się poniżej komunikat o błędzie.

Nie można usunąć gałęzi „Test_Branch” wyewidencjonowanej w „[lokalizacja katalogu]”.

Przełączono do innej gałęzi w programie Visual Studio i udało się usunąć „Test_Branch” z Sourcetree.

Mam nadzieję, że pomoże to komuś, kto używa Visual Studio i Sourcetree .

Praveen Mitta
źródło