2013-07-29 16 views
61

Użyłem git branch -d myBranch, aby usunąć oddział. Jednak gdy jestem w stanie master i spróbuję zrealizować płatność, nowy oddział z numerem git checkout nadal pojawia się w zakładce autouzupełnianie.Jak usunąć usunięte nazwy gałęzi z autouzupełniania?

Jak usunąć nazwę myBranch z tab-autouzupełniania dla git checkout?

+7

Czy 'git branch -a' nadal zawiera listę' myBranch' lub 'origin/myBranch'? Zauważ, że nawet jeśli 'myBranch' nie istnieje,' git checkout myBranch' jest nadal poprawnym skrótem dla 'git checkout -b myBranch origin/myBranch' jeśli istnieje' origin/myBranch'. – twalberg

+1

@twalberg warto opublikować jako odpowiedź. – cmbuckley

Odpowiedz

41

Jednym z możliwych powodów jest to, że jeśli oddział zdalny (np. origin/myBranch) nadal istnieje, to git checkout myBranch odniesie sukces jako alternatywa dla git checkout -b myBranch origin/myBranch. Jest to pomyślane jako ułatwienie dla wspólnego przypadku wypisania zdalnego oddziału po raz pierwszy, tworząc identycznie nazwany lokalny oddział śledzenia.

Są też inne możliwości, w zależności od tego, czego dokładnie używamy do ukończenia, ale jest to jedna z pierwszych rzeczy, które sprawdzałem. Jeśli używasz git branch -a, a na liście znajduje się origin/myBranch (lub jedna dla zdalnego innego niż origin, jeśli masz takie), to jest to prawdopodobny sprawca.

+0

Dzięki! To wydaje się być winowajcą. 'origin/myBranch' nadal istnieje. Jeśli usunąłem gałąź 'myBranch' na Github (poprzez interfejs online), czy mogę bezpiecznie wywołać' gałąź git -d origin/myBranch', aby usunąć gałąź zdalną? –

+52

@JohnHoffman To powinno być bezpieczne, ale myślę, że lepszym sposobem byłoby "git fetch --prune origin". Spowoduje to wyczyszczenie wszystkich lokalnych gałęzi śledzenia, które już nie istnieją na pilocie. – twalberg

+0

Dziękujemy! To się udało! –

0

To prawdopodobnie nie jest to git, to twoja powłoka kończy polecenie, ponieważ użyłeś go wcześniej.

Możesz rzucić okiem na swoją historię, wpisując history lub edytując ~/.bash_history. Możesz edytować swoją historię z pliku ~/.bash_history lub wpisać history, a następnie pobrać numer linii z git checkout myBranch, a następnie użyć history -d {line number here}. W ostateczności możesz użyć polecenia history -c, aby całkowicie rozgryźć historię.

+2

Nie, to nie jest historia historii bash. To jest [autouzupełnianie git] (http://apple.stackexchange.com/questions/55875/git-auto-complete-for-branches-at-the-command-line). Inne, ale bardzo przydatne narzędzie. – Arjan

+0

@Ajan Wow, nie wiedziałem, że to zrobił. Chyba założyłem, że ta zakładka po prostu nie zadziała i nigdy jej nie spróbuję. Dzięki! –

+0

Wówczas sam Linux pisze coś, możesz założyć, że przyszedł z autouzupełnianiem: 3 – ThorSummoner

68

git fetch --prune --all

Delegowanie to jako własną odpowiedź, ponieważ jest to jedna linia naprawić, ale jeśli głosowanie należy głosować na odpowiedź użytkownika @ twalberg powyżej.

@ sugestia twalberga do git branch -a doprowadziła mnie na właściwy tor; mój współpracownik zasugerował, aby git fetch --prune --all przycinać wszystkie martwe gałęzie ze wszystkich pilotów, co jest przydatne podczas pracy z wieloma programistami z wieloma widłami.

+7

Podczas gdy zaakceptowana odpowiedź daje miłe wyjaśnienie, dlaczego tak się dzieje, ta odpowiedź przedstawia rzeczywiste rozwiązanie problemu i dlatego powinna zostać zaakceptowana przez IMHO. –

Powiązane problemy