Będziesz miał „pień”, teraz nazywany „master”, będziesz miał „odgałęzienia”, teraz zwane „główkami”, i będziesz miał „tagi”, nadal nazywane „tagi”, ale nie będą to foldery , będą to „ refs ”, oznacza etykiety wersji, które znajdują się w oddzielnej przestrzeni nazw w repozytorium.
Subversion i Git mają różne sposoby rozgałęziania. Podstawowym modelem subwersji jest posiadanie drzewa katalogów z pojedynczą globalną osią czasu, a jeśli chcesz się rozgałęzić, skopiuj poddrzewo do innego katalogu.
Z drugiej strony Git ma drzewo katalogów z wersjami, z których każda definiuje swoich rodziców, ale każda wersja może mieć wielu rodziców (połączenie) i wiele dzieci (gałęzie). Zamiast więc katalogów dla oddziałów, otrzymujesz niezależnie utworzone wersje. „Referencje” to tylko nazwy związane z najnowszą wersją dla danego „oddziału”.
Różnica ta ma zasadnicze znaczenie dla rozproszonej kontroli wersji. Git (i inne systemy rozproszone) nie ma żadnego centralnego uprawnienia do utrzymywania historii na poziomie liniowym, więc zmiany mogą być tworzone niezależnie w wielu repozytoriach bez wiedzy o sobie, a system musi je uwzględnić. Okazuje się, że uogólnienie znacznie ułatwia rozgałęzianie i scalanie.
Zauważ, że w Git wersje nie są w żadnej gałęzi. Po prostu są, a gałęzie je zawierają. Ale kiedy gałąź zostanie scalona lub okaże się martwą uliczką, możesz po prostu usunąć „ref” wskazujący na nią i całkowicie o niej zapomnieć (jeśli odrzucisz stare próby, zostaną one ostatecznie usunięte git gc
). Pomaga to uniknąć zalania starych eksperymentów, których nikt już nie pamięta.