Co to jest gałąź tematyczna git?

137

Co to jest gałąź tematyczna git? Czy różni się w jakiś sposób od zwykłej gałęzi? Czy są jakieś gałęzie, które nie są gałęziami tematycznymi?

skiphoppy
źródło

Odpowiedzi:

114

Gałęzie tematów to zwykle lekkie gałęzie tworzone lokalnie, które mają znaczącą dla Ciebie nazwę . Są to miejsca, w których możesz pracować nad poprawką błędu lub funkcją (są one również nazywane gałęziami funkcji), których ukończenie powinno zająć trochę czasu.

Innym rodzajem oddziału jest „gałąź zdalna” lub „gałąź zdalnego śledzenia”. Ten rodzaj gałęzi podąża za rozwojem cudzej pracy i jest przechowywany w Twoim własnym repozytorium. Okresowo aktualizujesz tę gałąź (używając git fetch), aby śledzić, co dzieje się gdzie indziej. Gdy jesteś gotowy, aby nadążyć za zmianami innych osób, możesz użyć git pullzarówno pobierania, jak i scalania.

Widziałem również inny rodzaj gałęzi, która jest zasadniczo całkowicie oddzielnym drzewem plików w tym samym repozytorium. Na przykład samo repozytorium Git zawiera nagłówki o nazwach man i html, które zawierają zupełnie inną zawartość niż główna gałąź. Nie wiem, jak zwykle nazywa się tego typu gałęzie.

Greg Hewgill
źródło
6
Szukałem, jak mieć dwie gałęzie bez wspólnego zatwierdzenia przodka i znalazłem to: madduck.net/blog/…
Nicolas
1
Pisząc osobne drzewo, wydaje mi się, że czasami nazywa się je sierocą gałęzią, podobnie jak Github zaleca ręczne tworzenie strony github
maks.
1
Dlaczego mówisz, że gałąź tematyczna musi być lokalna? Nie ma powodu, aby sądzić, że możesz nie chcieć przesuwać gałęzi tematu. I podobnie, inni programiści mogą tworzyć własne gałęzie tematyczne, a Ty możesz chcieć je wyciągnąć. Ta odpowiedź wydaje się mylić dwie zupełnie niepowiązane właściwości oddziałów: to, czy oddział jest lokalny, czy nie, nie jest w ogóle związane z tym, czy jest to gałąź tematyczna.
Jean-Paul Calderone
@ Jean-PaulCalderone: Nie sądzę, że powiedziałem, że gałęzie tematyczne muszą być lokalne. Oczywiście możesz zdalnie śledzić gałąź tematyczną, jeśli pracuje nad nią więcej niż jeden programista.
Greg Hewgill,
2
Myślę, że odpowiedź to sugeruje. Dlaczego „… że tworzysz lokalnie…” i „… masz nazwę, która ma dla Ciebie znaczenie”. nieodłączną częścią tego, co składa się na „gałąź tematyczną”? Pierwsze zdanie Twojej odpowiedzi silnie sugeruje, że są to ważne cechy gałęzi tematycznej, ale w rzeczywistości obie są ortogonalne w stosunku do „tematu” gałęzi lub nie. Poniższy akapit, w którym opisujesz „zdalne gałęzie”, przypomina, że ​​ważna jest „utworzona lokalnie” część gałęzi tematu. Sugeruję ponowne skupienie się na tej odpowiedzi, aby zniwelować podkreślenie tych niezwiązanych ze sobą cech gałęzi.
Jean-Paul Calderone,
81

To nie jest termin techniczny; odnosi się tylko do gałęzi, która została utworzona w celu zaimplementowania określonej funkcji lub naprawienia błędu. „Temat” jest w istocie powodem powstania oddziału.

mipadi
źródło
2
tak. w przeciwieństwie do oddziału osobistego, w którym masz oddziały: bob, alice, mat itp.
webmat 13.11.08
... więc gałąź tematyczna i gałąź funkcji to to samo, prawda?
Betlista
@Betlista Mniej więcej tak.
mipadi
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches wyjaśnia to dobrze:

Gałąź „tematu” to osobna gałąź, której używasz podczas pracy nad pojedynczym „tematem” (poprawka błędu, nowa funkcja lub pomysł eksperymentalny). Zaleca się pracę nad gałęzią tematyczną zamiast bezpośrednio nad „nadrzędną”, ponieważ:

{... odwiedź link ...}

Tak więc, z tych wszystkich powodów, zaleca się używanie gałęzi tematycznej do przygotowywania zgłoszeń nawet w przypadku prostego wkładu, takiego jak pojedyncze poprawki błędów i tym podobne.

Ta próbka zawiera również przykłady. Co właściwie skłoniło mnie do myślenia, prawdopodobnie to już robi większość sklepów. Wszystkie zwinne projekty, z którymi kiedykolwiek byłem, robią. Głosowałem za "To nie jest termin techniczny", ponieważ czuję, że uderza to w sedno.

Jeff Ancel
źródło
4

wygląda na to, że najważniejszym i najważniejszym typem gałęzi, które nie są gałęziami tematycznymi, byłyby gałęzie wydania w głównym, publicznie dostępnym repozytorium, prawda?

Prawdopodobnie jest to właściwe dla Ciebie, ale chodzi o Ciebie i projekt, o którym myślisz; nie jest określane przez Git.

Większość systemów kontroli wersji (szczególnie scentralizowanych) nakazuje lub wymusza określony przepływ pracy, w tym, do czego ma sens użycie gałęzi. Git (i do pewnego stopnia większość rozproszonych VCS) bierze pod uwagę, że przepływ pracy, jakie gałęzie są używane, kiedy zatwierdzać, do jakich różnych repozytoriów są używane itp. Są wybierane przez użytkowników i umowy między użytkownikami (polityki). Więc Git nie narzuca ich technicznie.

To jedna z rzeczy, które utrudniały mi naukę Gita. Oliver Steele wyjaśnił to z punktu widzenia użytkownika, pisząc o Polityce Commit .

Paweł
źródło