2013-05-03 7 views
7

Stworzyłem widelec repozytorium git na BitBucket (nazwijmy to fork_origin). Teraz repozytorium upstream (nazwijmy to upstream_origin) miało wiele oddziałów scalonych w jego master i usuniętych. Tak działaPrzycinanie gałęzi, które zostały usunięte w repozytorium Git, ale nadal istnieje w moim widelcu

git fetch --prune upstream_origin 

usuniętych wiele remote/upstream_origin/ oddziałów, ale teraz te same gałęzie nadal istnieć w przestrzeni nazw remote/fork_origin/.

Czy istnieje standardowe polecenie git, aby sobie z tym poradzić? Chciałbym trzymać się z daleka od złożonych skryptów bash, które masowo usuwają na zdalnych repozytoriach.

UPDATE:

Jak sugeruje, próbowałem użyć polecenia zdalnego śliwek:

git remote prune fork_origin 

Jednak to nie miało wpływu. Po dalszych badaniach, że wydaje się działać tylko dla oddziałów „nieświeży”, ale gdy uruchomię:

git remote show fork_origin 

pokazuje, że wszystkie oddziały są nadal „śledzone”. Więc ma sens, że polecenie git remote prune nie ma nic nieaktualnego do usunięcia. Czy istnieje sposób na wymuszenie zdalnego repo (fork_origin), aby zaktualizować jego statusy oddziału w stosunku do upstream_origin?

+0

Czy kiedykolwiek to zorientować się? Występuje ten sam problem. – BigBrownBear00

Odpowiedz

1

Jeśli chcesz usunąć gałęzie na pilocie zdalnego użyj polecenia:

git remote prune fork_origin 

Wcześniej jednak przyjrzeć się tym wątku i zobaczyć, co może się nie udać: git remote prune – didn't show as many pruned branches as I expected

+0

Dodałem aktualizację pytania dotyczącego tego, co zrobiło to polecenie. Ponadto są to gałęzie, które nie mają lokalnego oddziału, śledząc je, więc nie sądzę, aby problemy z drugiego wątku dotyczyły mojej sytuacji. –

0

Nie ma jedno polecenie git, ale trzeba;

  • sprowadzić fork_origin
  • zidentyfikować żadnej remotes/fork_origin/branch który nie występuje już w remotes/upstream_origin (z powodu twojej git fetch --prune upstream_origin)
  • git push --delete thoseBranches

ten jest nieco podobny do "Delete multiple remote branches in git".

0

Dla użytkowników systemów Linux i Mac to polecenie usunie wszystkie gałęzie z mojej pracy, które zostały usunięte w poprzedniej wersji.

git branch -a | grep origin | awk -F \/ '{print $NF}' > _my_branches.txt; git branch -a | grep upstream | awk -F \/ '{print $NF}' > _upstream_branches.txt; for deleted_branch_name in `comm -23 _my_branches.txt _upstream_branches.txt`; do git push origin :$deleted_branch_name; done 

Jeśli wolisz mieć kroki zamiast jednej długiej komendy:

# Find the branches in my fork 
git branch -a | grep origin | awk -F \/ '{print $NF}' > _my_branches.txt; 
# Find the branches still in upstream 
git branch -a | grep upstream | awk -F \/ '{print $NF}' > _upstream_branches.txt; 
# See only the ones that are still in my fork with the comm command 
# And only for those branches issue a git command to prunbe them from my fork. 
for deleted_branch_name in `comm -23 _my_branches.txt _upstream_branches.txt`; do git push origin :$deleted_branch_name; done 
Powiązane problemy