Czy powinienem usunąć oddział po scaleniu?

97

Czy po scaleniu gałęzi usuwasz ją z repozytorium?
Jednak to dobra praktyka czy nie?

Zwykle tworzę wiele gałęzi, ponieważ nie chcę przerywać mojej obecnej wersji i chciałbym je usunąć, aby zachować porządek.
Jeśli jednak pracujesz z Assemblą lub GitHubem, Twoje żądania scalenia ze starych gałęzi zostaną zapisane w witrynie, więc jeśli je usuniesz, pojawi się błąd, ponieważ nie będzie w stanie ich pobrać ...

Zwykle jak sobie z tym radzisz?

tampe125
źródło

Odpowiedzi:

77

Nie ma problemu z usunięciem gałęzi, które zostały scalone. Wszystkie zatwierdzenia są nadal dostępne w historii i nawet w interfejsie GitHub będą się nadal pojawiać (zobacz np. Ten komunikat PR, który odnosi się do forka, usunięte po zaakceptowaniu PR).

Fred Foo
źródło
Powiedziałeś, że wszystkie zatwierdzenia są nadal dostępne w historii. Jeśli przeglądam projekt na github.com, stwierdzam, że to prawda. Jednak w aplikacji Github na komputery Mac wydaje się, że nie można już zobaczyć historii zmian dla scalonej gałęzi. Czy się mylę?
pokój z
Dodałbym, że jeśli nie używasz klienta git, zwłaszcza nie używasz takiego z GUI, posiadanie gałęzi może być pomocne w dobrym zrozumieniu logu. Oznacza to, że ponieważ nie masz github / gitlab / innego GUI do obejrzenia, zachowanie nazw gałęzi pozwala mieć proste miejsce do odwoływania się do historii oprócz historii zatwierdzeń - co w przeciwnym razie zostanie utracone przez usunięcie gałęzi. Niech ktoś mi powie, jeśli to ostatnie stwierdzenie jest błędne.
Raj
@Raj masz to już w postaci Merge branch fix-foo-barkomunikatów o zmianach . Spróbuj git log --grep="Merge branch", a następnie upuść własne zakotwiczenia za pośrednictwem git checkout -b curious-change. Ponadto, nic nie jest tracone podczas usuwania gałęzi - poza zwykłym wskaźnikiem „nazwa gałęzi → commithash” (którym jest naprawdę gałąź, nie ma znaczenia, czy jest lokalna, ani zdalna).
ulidtko
2
@ fred-foo Nie ma jednak odpowiedzi na pytanie, czy jest to dobra praktyka. (Mam to samo pytanie)
Esger
29

Zdecydowanie sprzątam swoje gałęzie po ich scaleniu.

Korzystamy z GitLab i scalamy żądania w pracy, dzięki czemu przechowywane są tam historyczne informacje o oddziałach; Nie potrzebuję, żeby zaśmiecały moją listę oddziałów, a kiedy patrzę na widelec współpracownika, najlepiej chciałbym zobaczyć tylko gałęzie ich obecnego aktywnego rozwoju. Jeśli próbuję przyjrzeć się kodowi w ich gałęzi, chcę mieć możliwość przejrzenia tylko kilku aktualnie aktywnych gałęzi, a nie każdej funkcji lub poprawki, nad którą kiedykolwiek zaczęli pracować.

Powyższe dotyczy również BitBucket i GitHub.

Jedynym powodem, dla którego możesz nie usuwać gałęzi po scaleniu, jest to, że wiesz, gdzie kończy się dana funkcja, ale zatwierdzenia scalania (i git merge --no-ffjeśli naprawdę chcesz) sprawiają, że nie ma to znaczenia.

Asherah
źródło
3
Najwyraźniej GitHub zawsze robi --no-ff, więc nie zgubimy faktu, że była to gałąź nawet w takich sytuacjach.
joeytwiddle
7
@joeytwiddle: zakładając, że używasz własnego interfejsu GitHub do scalania gałęzi, tak!
Asherah
1

Wystarczy zadbać o
wszystkie hiperłącza, adresy URL, odniesienia do Twoich USUNIĘTYCH oddziałów, zostaną ZŁAMANE .

Na przykład,
jeśli usuniesz branch_feature_xoddział z repozytorium
Odpowiedni adres URL hiperłącza tego oddziału zostanie uszkodzony
https://github.com/username/project/tree/branch_feature_x

ahmednabil88
źródło
0

Dla wyjaśnienia, gałąź, z punktu widzenia gita, jest po prostu połączeniem z jakimś zatwierdzeniem. Usuwając gałąź, nie usuniesz zatwierdzeń z repozytorium git. Oczywiście oderwany zatwierdzenia zostaną wyczyszczone po pewnym czasie przez git garbage collector.

FYI: Zwykle łączymy gałęzie w master za pośrednictwem interfejsu bitbucket. Tam możesz ustawićdelete feature branch after merge flagę.

Jeśli potrzebujesz poradzić sobie ze zbyt starymi gałęziami, możesz poszukać narzędzi, na przykład tego .

AGrigorii
źródło
Pamiętaj, aby zapoznać się z zasadami autopromocji Stack Overflow . Co najmniej musisz ujawnić swoje powiązanie z sugerowanym narzędziem.
Jeremy Caney