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:
Wracam teraz na master i usuwam ten 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.
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):
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ć.
1 Komentarz
dotnetomaniak.pl · 22 listopada 2018 o 6 h 22 min
Jak przywrócić usunięty branch – Tomasz Prasołek
Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl