Orphan branch – komu to potrzebne? A dlaczego?

Orphan (sierota) branch jest to specyficzny rodzaj brancha. Znajduje się on w naszym repozytorium, ale może on mieć całkowicie inną historię niż pozostałe branche.

Historia commitów – krótkie przypomnienie

Jak wszyscy wiemy tworząc nowe repozytorium, tworzy Nam się od razu nowy branch o nazwie master. Pierwszy commit jest specjalny, ponieważ nie posiada żadnego rodzica. Jest to tak zwany root commit. Wszystkie następne commity będą miały jakiegoś rodzica.

Większość commitów będzie miało tylko jednego rodzica, a bardzo mała liczba commitów będzie miała 2 rodziców. Chodzi o commity powstałe po operacji merge. Teoretycznie jeden commit może mieć nieskończenie wiele rodziców.

Ostatni commit na 2 rodziców. Wszystkie poprzednie jednego. Pierwszy commit ich nie posiada.

Co to jest orphan branch?

Orphan branch jest to branch z całkowicie nową historią. Tworząc go, jego historia będzie pusta. Pierwszy commit, który zostanie na nim zrobiony będzie jego root commitem.

Zastosowanie w praktyce

W tym momencie widzę 2 zastosowania takiego brancha:

  1. Tworzenie dokumentacji czy stronki WWW dla naszego projektu (np. korzystając z GitHub Pages), aby trzymać je w tym samym repozytorium, ale nie mieszać jej z kodem źródłowym projektu.
  2. Połączenie dwóch nie powiązanych ze sobą repozytoriów z różną historią.

Pierwszy przypadek zastosowania jest jasny, nie będę go więcej tłumaczył. W drugim chodzi o to, że w gicie można skopiować całe repozytorium (można nawet tylko wybrane katalogi) do innego z zachowaniem historii. W tym przypadku skopiowalibyśmy je do innego projektu, właśnie do takiego przygotowanego orphan branch. Następnie scalamy ten orphan branch z naszym branchem developerskim. W ten sposób mamy w naszym projekcie nowy kod, ale z zachowaniem jego historii z poprzedniego repozytorium.

Jak zrobić orphan branch?

git checkout --orphan <nazwa_brancha>
Create orphan branch

Wszystkie pliki z brancha z którego robiliśmy nasz nowy branch zostaną skopiowane i dodane do staging area. Skoro chcemy mieć brancha z całkowicie nową historią i innym kodem, należy te pliki usunąć:

git rm -rf .
Remove all files from repository

Możemy dodać teraz pliki i zrobić pierwszy commit na tym branchu. Dodałem plik README.md i zrobiłem commit. W historii jest tylko jeden wpis.

Po wykonaniu commita widać w konsoli informację, że utworzony commit, to root-commit.

Podsumowanie

W tym wpisie pokazałem jak można zrobić orphan branch. Nie jest to wcale trudne. Taki rodzaj brancha jest bardzo rzadko wykorzystywany, ale czasem może się przydać.

Graf z początku wpisu jest zrobiony w narzędziu Visualize Git.

Źródła:

Jeśli spodobał Ci się ten wpis i chcesz otrzymywać powiadomienia o nowych treściach dotyczących zagadnień związanych z Gitem, to zachęcam do subskrypcji mojego bloga.

3 thoughts on “Orphan branch – komu to potrzebne? A dlaczego?

  1. Pingback: dotnetomaniak.pl

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *