Co zrobić z oddziałem po scaleniu

342

Miałem dwie gałęzie: masteri branch1. Właśnie połączyła się branch1z powrotem do masteri skończę z tego oddziału. Czy powinienem go usunąć, czy po prostu pozwolić mu usiąść? Czy usunięcie go spowoduje utratę danych?

Alison
źródło
Zobacz także: Jak korzystać z git merge - quash?
Martin Thoma,

Odpowiedzi:

410

Po scaleniu można bezpiecznie usunąć gałąź:

git branch -d branch1

Dodatkowo git ostrzeże Cię (i odmówi usunięcia gałęzi), jeśli myśli, że jeszcze go nie scaliłeś. Jeśli wymusisz usunięcie gałęzi (z git branch -D), która nie jest jeszcze całkowicie scalona, ​​musisz wykonać kilka sztuczek, aby odzyskać niezmergowane zatwierdzenia (patrz poniżej).

Istnieje jednak kilka powodów, aby trzymać oddział w pobliżu. Na przykład, jeśli jest to gałąź funkcji, możesz chcieć mieć poprawki błędów dla tej funkcji, która wciąż znajduje się w tej gałęzi.

Jeśli chcesz również usunąć oddział na zdalnym hoście, możesz:

git push origin :branch1

Spowoduje to wymuszone usunięcie gałęzi na pilocie (nie wpłynie to jednak na już wypisane repozytoria i nie uniemożliwi nikomu z dostępem push do ponownego wypchnięcia / utworzenia).


git reflogpokazuje ostatnio sprawdzone wersje. Każdy oddział, który sprawdziłeś w najnowszej historii repozytorium, również się tam pojawi. Poza tym git fsckbędzie narzędziem wyboru w każdym przypadku utraty zatwierdzenia w git.

Jonas Schäfer
źródło
Jeśli chcesz zapisać oddział, możesz utworzyć znacznik przed jego usunięciem. Jeśli chcesz wrócić do tego punktu, możesz pobrać ten tag.
Joqus
3
@Joqus W takim przypadku wolałbym raczej zachować go jako gałąź. Po prostu nie publikuj tego.
Jonas Schäfer
Na wszelki wypadek - jeśli chcesz „całkowicie scalić” gałąź przed usunięciem, po prostu wciśnij tę gałąź po scaleniu, ale przed usunięciem. Coś w stylugit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
avtomaton
25

Wolę RENAME zamiast DELETE

Wszystkie moje oddziały są nazwane w formie

  • Fix/fix-<somedescription> lub
  • Ftr/ftr-<somedescription> lub
  • itp.

Korzystanie Wieża jak mój git przedniej części, to starannie organizuje wszystko Ftr/, Fix/, Test/itd. W katalogach.
Kiedy skończę z oddziałem, zmieniam ich nazwy na Done/...-<description>.

W ten sposób wciąż tam są (co może być przydatne do dostarczenia historii) i zawsze mogę wrócić, wiedząc, co to było (funkcja, naprawa, testowanie itp.)

Yohst
źródło
4
Czy zmieniasz także nazwy zdalnych gałęzi?
VitalyB
22
Wydaje się zbędne utrzymywanie tych gałęzi i szaleństwo zmieniać ich nazwy . Czy coś mi umyka? Zawsze możesz odtworzyć gałąź. stackoverflow.com/questions/3640764/…
ksav
nie ma sensu utrzymywać oddziałów po ich połączeniu
rastaman
2
+1 za pomysł zmiany nazwy na Napraw, Testuj i Gotowe ... Utrzymanie oddziałów to sposób, w jaki kontrahenci otrzymują wynagrodzenie w mojej firmie.
jpfreire
1

Jeśli pójdziesz dalej i usuniesz gałąź po scaleniu.
Po prostu zadbaj o to, aby
wszystkie odsyłacze do adresów URL odsyłaczy do usuniętych gałęzi były USZKODZONE .

ahmednabil88
źródło