2013-01-17 8 views
11

Mam następujące oddziały:Tak wiele nieużywanych gałęzi. Jak oczyścić?

* master 
newbranch 
remotes/origin/HEAD -> origin/master 
remotes/origin/api-notes 
remotes/origin/event-creation-validation 
remotes/origin/master 
remotes/origin/organizerlocation-bug-demo 
remotes/origin/ticket-180 
  1. jest obecny mistrz oddział różni się od pochodzenia/kapitana lub są te gałęzie współpracy?

  2. Jak mogę wykryć ostatnie zmiany w różnych oddziałach i jak mogę je usunąć do czyszczenia?

Dziękuję bardzo.

Odpowiedz

3

1/Czy obecny wzorzec oddziału różni się od źródła/wzorca lub czy te gałęzie współpracują ze sobą?

Jest inny (nawet jeśli zaczął się od origin/master po klonie) i nie śledzi origin/master (patrz "how do I change the remote a git branch is tracking?").

2/jak mogę je usunąć do czyszczenia

Można usunąć gałąź z nazw pilotów z:

git branch -rd origin/api-notes 

(Więcej w "How do you Remove an Invalid Remote Branch Reference from Git?")

Można git diff lub git zapisz dwie gałęzie, aby zobaczyć zatwierdzenia, których nie masz:
Zobacz "Git diff .. ? What's the difference between having .. and no dots?".
Zobacz także "Git: Compare All Local Commits to Remote Repo Version".

7

Nie masz żadnego powodu, aby martwić się lub sprzątać. Oto dlaczego:

Czy obecny wzorzec oddziału różni się od źródła/wzorca lub czy te gałęzie współpracują ze sobą?

Jeśli utworzyłeś mastera jako gałąź śledzącą lub sklonowałeś (domyślnie klon tworzy mistrza śledzenia), to tak, sortuj. Śledzenie oznacza po prostu, że git użyje tego odwzorowania gałęzi jako domyślnego celu dla wypychania i scalania. Wyświetli również komunikaty o stanie, takie jak "master gałęzi jest przed źródłem/wzorcem przez 2 zatwierdzenia".

Jak mogę wykryć ostatnie zmiany w różnych oddziałach?

ja po prostu użyć

git branch -av 

To pokazuje krótki popełnić id i krótkie podsumowanie dla wszystkich oddziałów lokalnych i zdalnych.

Do tego możesz użyć dziennika git. git log --decorate jest bardzo pomocna, aby zobaczyć, które gałęzie wskazują na to, co się zobowiązuje. W najnowszych wersjach git (1.7.11+) można włączyć go na stałe za pomocą polecenia:

git config --global log.decorate short 

Jak mogę usunąć je do czyszczenia?

Nie - odległe gałęzie nie należą do Ciebie. Oddziały zdalne po prostu odzwierciedlają stan zdalny w czasie wykonania ostatniego git fetch.Nie możesz ich utworzyć, nawet jeśli usuniesz je za pomocą git branch -rd, kiedy następnym razem wykonasz git fetch, te wskaźniki odleglejszych gałęzi będą natychmiast z powrotem.

Ale jeśli całkowicie usunąć ten pilot:

git remote rm origin 

następnie wszystkich zdalnych oddziałów dla tego pilota zniknie od razu.

+0

Ładne wyjaśnienie, bardziej szczegółowe niż moja odpowiedź. +1 – VonC

Powiązane problemy