2011-12-23 23 views
88

, więc zaczynam korzystać z Git + GitHub.Jak zamknąć oddział Git?

W naszym małym, rozproszonym zespole, każdy członek tworzy swój własny oddział dla każdego wydania/wymagania, które mu przydzielono.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

teraz code code, commit, code, commit, etc ...

następnie pull request, code-fixup, commit, code, commit .. itp

i WRESZCIE ... żądanie pobrania jest akceptowane.

Woot.

ale .. co teraz? (...... niezręczny ......)

Czy osoba, która utworzyła oddział na swojej lokalnej maszynie deweloperskiej, musi ... zamknąć oddział? Sugestia była taka, aby osoba odpowiedzialna za dev usunęła gałąź `(... -D ...), a następnie wykonała polecenie pull/refresh of the master .., które otrzyma cały swój kod oddziału.

Hmmmmm ... nie jestem pewien - proszę o pomoc :)

+14

Oddział w Git jest po prostu etykietą konkretnego zatwierdzenia - więc w zasadzie, jeśli już go nie potrzebujesz - po prostu usuń tę "gałąź" (tą "etykietę" tego zatwierdzenia). Lokalnie, po prostu zrób 'git branch Issue # 1 -d' i to wszystko - brak kodu, po prostu etykieta jest usuwana z twojego repozytorium –

+1

@marc_s Proponuję po prostu odpowiedzieć na to :) – KingCrunch

+0

@marc_s - mówisz, że standardowa praktyka, gdy ukończyłeś swoją gałąź ... i gałąź została zepchnięta ... usuwamy? A co z łączeniem? –

Odpowiedz

152

Prosimy że deweloper z prośbą do państwa żądanie pociągnięcie że chcieliby oddziału usunięte. Zazwyczaj tak jest. Są chwile, kiedy potrzebna jest gałąź (np. Kopiowanie zmian do innej gałęzi wydania).

Palce zostały zapamiętane nasz proces:

git checkout <feature-branch> 
git pull 
git checkout <release-branch> 
git pull 
git merge --no-ff <feature-branch> 
git push 
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>" 
git push --tags 
git branch -d <feature-branch> 
git push origin :<feature-branch> 

Oddział jest do pracy. Znacznik oznacza miejsce w czasie. Oznaczając każdy scalony oddział, możemy w razie potrzeby wskrzesić gałąź. Znaczniki gałęzi były używane kilka razy w celu przeglądu zmian.

+7

Wprowadziliśmy ostatnią zmianę do naszej procedury. Używanie 'git push --tags' jest bardzo trudne i powoduje pobranie wszystkich tagów. To sprawia, że ​​trudno jest mieć własne tagi lokalne. Zamiast tego używamy 'git push origin branch- ', aby wypchnąć tylko jeden tag. –

+0

Tak więc w ostatniej linii należy pamiętać, aby użyć nazwy znacznika gałęzi funkcji, którą wcześniej ustawiliśmy w "branch- ", a nie tylko . Poprawny? –

+0

@PremierBromanov ostatnia linia służy do usuwania zdalnej gałęzi. Pamiętaj, że tag @BillDoor użył 'git push --tags'. – Deivide

37

Tak, po prostu usunąć gałąź uruchamiając git push origin :branchname. Aby później naprawić nowy problem, odtwórz go ponownie od wzorca.

+3

To usunie gałąź zdalną, a nie lokalną. – KingCrunch

+3

Nie wiem, dlaczego jest modded na -2, to jest poprawna odpowiedź. Zdecydowanie mają oddział zdalny, jak inaczej mogliby wystawić PR przeciwko niemu? –

+1

@PaulBetts Zgadzam się. Również głosowałem za tym. – gilligan

34

po zakończeniu kod najpierw scalić oddziału do opanowania następnie usunąć tę gałąź

git checkout master 
git merge <branch-name> 
git branch -d <branch-name> 
+0

i to jest na mojej własnej maszynie dev, prawda? główna osoba, która akceptuje każdy nowy kod ... jego maszyna jest gdzie indziej. –

+2

Jeśli ktoś inny wykonuje scalanie, ma swój wskaźnik gałęzi w oddzielnym pilocie, zwykle np. nadawca/nazwa-oddziału. Będzie musiał użyć 'git remote prune sender', aby pozbyć się go po tym, co zrobiłeś - choć w większości przypadków nie musi się tym przejmować. –

+1

* Nigdy nie powinieneś łączyć swojej własnej gałęzi, chyba że jesteś osobą odpowiedzialną za zintegrowanie jej z głównym drzewem. Jeśli nie jesteś i poprosiłeś kogoś, aby to zintegruje, zaktualizuj swój główny oddział nowymi zdalnymi uprawnieniami - powinny one zawierać wszystko, co zażądałeś, a następnie usunąć swój oddział. Zapewni to, że nie będziesz mieć problemów, jeśli drugi facet zmieni rzeczy. – ThiefMaster