Jak przywrócić usunięty branch

Czasami zdarza się, że usuniemy coś, bo myślimy, że już się Nam nie przyda. Po jakimś czasie okazuje się, że właśnie teraz to by się przydało 🙂 W tym wpisie pokaże jak przywrócić usunięty branch.

Sytuacja nr 1 – przywrócenie brancha, który usunęliśmy dosłownie przed chwilą

Stworzyłem sobie testowe repozytorium, kilka commitów i dodatkowy branch deleted_branch. Na nim dodałem jeszcze jeden commit. Sytuacja wygląda tak:

branch history

Wracam teraz na master i usuwam ten branch.

after delete branch

W komunikacie widać jaki był początek identyfikatora sha-1 ostatniego commita na tym branchu. Widać ten sam identyfikator na zrzucie ekranu pokazującym historię brancha. Co teraz trzeba zrobić, aby przywrócić branch? Wystarczy jedno polecenie:

git checkout -b my_deleted_branch b66fc14

I to tyle 🙂 Już mamy przywrócony branch. To polecenie tworzy nowy branch z podanego commita i od razu przechodzi do niego. W taki sposób branch można również zrobić z nieskasowanych commitów.

restored branch

Sytuacja nr 2 – branch został usunięty już jakiś czas temu

Jeśli branch usuneliśmy już jakiś czas temu i nie znamy identyfikatora ostatniego commita, to musimy skorzystać z polecenia:

git reflog

Dostajemy historię naszego repozytorium (kliknij aby powiększyć zrzut ekranu):

git reflog

Ja tylko zawęziłem historię do 15 ostanich wpisów, bo przecież usunąłem brancha przed chwilą. W innych przypadkach te informacje nie będą na początku tej historii.

Musimy znaleźć w historii repozytorium ostatni commit, który znajdował się na skasowanym branchu. Ja akurat pamiętam, że był to commit o wiadomości “Important commit nr: 6”. Jeśli nie pamiętamy co to był za commit, trzeba przejrzeć inne wpisy w historii, które Nas na niego naprowadzą. W mojej sytuacji widzę, że linia (8 od góry):

5c867ba (HEAD -> master) HEAD@{7}: checkout: moving from master to deleted_branch

oznacza stworzenie brancha deleted_branch. Czyli kolejne commity to praca na tym branchu i dopiero ta linia:

5c867ba (HEAD -> master) HEAD@{0}: checkout: moving from deleted_branch to master

to zmiana aktywnego brancha deleted_branch na master. Czyli poprzednia linia to wpis z informacją o ostatnim commicie na branchu deleted_branch. W pierwszym kolumnie (na żółto) mamy informację o identyfikatorze commita, którego dotyczy ta linia. Wystarczy teraz wpisać już znane Nam polecenie:

git checkout -b deleted_branch 1ff9e06

I branch spowrotem istnieje 🙂

Podsumowanie

Wykorzystując jedno lub dwa polecenia możemy w prosty sposób przywrócić usunięty branch. Oczywiście jeśli dawno usunęliśmy branch to trudniej będzie go znaleźć w historii, ale jak widać w Gicie nic nie ginie i można to odzyskać.

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.

1 thought on “Jak przywrócić usunięty branch

  1. Pingback: dotnetomaniak.pl

Dodaj komentarz

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