Orphan branch – komu to potrzebne? A dlaczego?

Opublikowane przez Tomasz Prasołek w dniu

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:


3 Komentarze

marbel82 · 14 stycznia 2019 o 11 h 39 min

Czy mógłbyś wytłumaczyć co miałeś na myśli pisząc: “Teoretycznie jeden commit może mieć nieskończenie wiele commitów.”?

    Tomasz Prasołek · 14 stycznia 2019 o 11 h 57 min

    Już poprawione. Miało być “nieskończenie wiele rodziców”. Dzięki za zwrócenie uwagi.

dotnetomaniak.pl · 20 stycznia 2019 o 21 h 08 min

Orphan branch – komu to potrzebne? A dlaczego? – Tomasz Prasołek

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Dodaj komentarz

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