2013-07-19 17 views
15

Chcę usunąć niektóre zdalne gałęzie mojego repozytorium projektu. Zabrakło mi następną komendę:Usuwanie odległych oddziałów w Git

git push origin :name_of_branch 

a kiedy listy zdalnych oddziałów z

git branch -r 

Oddziału że mam usunięte nie pojawia, ale mój partner prowadzony

git fetch 

a później

git branch -r 

i na liście usunięto gałąź name_of_branch, która nadal znajduje się na liście. Jednak, kiedy próbuje usunąć gałąź z

git push origin :name_of_branch 

otrzymuje kolejną wiadomość:

error: unable to delete 'name_of_branch': remote ref does not exist 
error: failed to push some refs to 'the_name_of_the_repository' 

Jak mogę usunąć gałąź całkowicie z listy?

+0

Duplikat [Usuń oddział Git zarówno lokalnie, jak i zdalnie?] (Http://stackoverflow.com/q/2003505/456814). –

Odpowiedz

23

Dzieje się tak dlatego, że gdy twój partner pracuje git fetch, usunięcie gałęzi nie jest „stosowane” do swojego repozytorium. fetch aktualizuje i dodaje tylko gałęzie.

Mogą uruchamiać git remote prune origin, aby odciąć odległe gałęzie na ich liście, które nie istnieją w repozytorium.

+4

FYI, 'git remote prune' jest nieco przestarzałe na rzecz' git fetch --prune' lub 'git fetch -p'. Zobacz [informacje o wydaniu wersji 1.6.6 Git] (https://github.com/git/git/blob/v2.0.0/Documentation/RelNotes/1.6.6.txt # L162-L166): "[git fetch --prune' czyni]' git remote update' i 'git remote prune' mniej potrzebne (nie ma planu na usunięcie' remote update' ani 'remote prune', though). " –

9

git fetch --prune <remote> można użyć do usunięcia wszystkich oddziałów zdalnego śledzenia śledzących gałęzie, które nie istnieją w zdalnym repozytorium (tj. Zostały usunięte w pilocie). Z official Linux Kernel Git documentation for fetch:

-p

--prune

po pobraniu należy usunąć wszelkie zdalne śledzenie oddziałów, które już nie istnieją na pilocie.

Można również zdalne przestarzałe gałęzie zdalnego śledzenia z poleceniem

git branch -D -r <remote>/<branch> 

podano w the documentation for git branch:

użytkowania -r wraz z -d usunąć gałęzie zdalnego śledzenia. Zauważ, że sensowne jest usuwanie oddziałów śledzenia zdalnego, jeśli nie istnieją już w zdalnym repozytorium lub jeśli skonfigurowano git fetch, aby nie pobierać ich ponownie.

Powiązane problemy