Dzisiaj bardzo mała ale bardzo przydatna rzecz – cofanie zmian w git. Myślę że jest to rzecz którą powinien się nauczyć każdy użytkownik git’a zaraz po zatwierdzaniu zmian i umieszczaniu ich na serwerze.
Przy męczącej pracy bez kawy albo przez zwykłą pomyłkę może się nam zdarzyć zatwierdzenie zmian z których nie jesteśmy zadowoleni. Może to być poważny błąd w kodzie, którego nie chcielibyśmy w naszym repozytorium albo zatwierdzenie zmiany, która docelowo miała się znaleźć w innej gałęzi. Są na to dwa rozwiązania warte zapamiętania. Pierwsze bardziej uniwersalne, drugie nadające się do przypadku z pomyłką gałęzi.
Rozwiązanie
Cofanie się o krok w tył
Operacja reset służy nam do cofnięcia naszego głównego wskaźnika do wybranego przez nas miejsca. Poza tym możemy wybrać jeden z kilku dostępnych trybów. Ja się skupię na dwóch.
git reset --hard HEAD^ - używamy kiedy nie chcemy odzyskać zmodyfikowanych plików przed zatwierdzeniem. Stosujemy w przypadku kiedy napisaliśmy bardzo dużo bzdur i chcemy zacząć od nowa.
git reset --soft HEAD^ - miękkie cofanie zmian w tym przypadku oznacza zatrzymanie zmian i pozwolenie na ich poprawienie oraz późniejsze zatwierdzenie do repozytorium.
Po tych operacjach wystarczy poprawić kod, upewnić się że jesteśmy na właściwej gałęzi i jeszcze raz zatwierdzić git commit.
Przeniesienie ostatniej zmiany do nowej gałęzi
Ten sposób jest trochę bardziej zawiły i składa się z kilku kroków:
- git branch nazwa – na początku tworzymy nową gałąź, w tej chwili mamy identyczną historię jak gałąź główna,
- git checkout dev – w tym momencie cofamy się do naszej głównej gałęzi na której pracujemy (tutaj jest to 'dev’)
- git reset –hard HEAD^ – cofamy nasze zatwierdzenia na gałęzi głównej.
Oba sposoby są tak na prawdę wykorzystaniem tej samej operacji. Natomiast pokazują one jak wykorzystać operację w zupełnie inny sposób.