piątek, 11 marca 2011

GIT - usuwanie kilku commitów jednym poleceniem

Jak wiadomo usunięcie konkretnego commita w GIT'cie odbywa się komendą:
git revert odcisk_SHA
Całe szczęście, że można wpisywać tylko 7 pierwszych znaków odcisku SHA commita.
Aby sprawdzić ostatnie np. dwa odciski commitów zawołaj:
git log -2
Czasami się tak zdarza, że można zabrnąć w kodzie w ślepą uliczkę nie tworząc do tego gałęzi (branch). Może zaistnieć wtedy potrzeba usunięcia pod rząd kilku commitów. Wpisywanie "z palca" raczej nie wchodzi w rachubę bo można oszaleć. Trzeba więc było coś wymyślić.
Z pomocą przyszła komenda
git rev-list
Ma ona mnóstwo opcji, ale w podstawie wyświetla ona między innymi odciski SHA commitów. Gdy się użyje w takiej składni:
git rev-list f182667 --max-count=5
to wyświetlone zostanie 5 odcisków commitów  począwszy od commita oznaczonego jako f182667. No to już bliziutko do finału, który brzmi:

for i in `git rev-list f182667 --max-count=5`; do git revert --no-edit $i; done
Po co została użyta opcja --no-edit? Ano gdyby jej nie było, to pięć razy git by prosił o opisanie kolejnie wykonywanej operacji revert. Upierdliwe, że hej.

UWAGA! Pułapka: te górne apostrofki to nie są te normalne... To są te po lewej stronie klawisza "1" pod tyldą "~".

Brak komentarzy:

Prześlij komentarz