Git Revert vs. reset: Jak cofnąć zmiany w projekcie

W Git może wystąpić sytuacja, gdy trzeba cofnąć zmiany – czy to z powodu niezamierzonego commita, czy błędów w kodzie. Git oferuje dwa główne sposoby rozwiązania tych sytuacji: git revert i git reset. Chociaż na pierwszy rzut oka mogą wydawać się podobne, ich działanie jest zupełnie inne. W tym artykule przyjrzymy się ich różnicom oraz zastosowaniu w rzeczywistych scenariuszach.

Co to jest Git revert i jakie ma praktyczne znaczenie?

Git revert to sposób na cofnięcie konkretnego commita bez utraty historii. Zamiast usuwać commit, tworzy nowy commit, który neguje zmiany poprzedniego commita.

Kiedy używać git revert?

Przykład użycia git revert

Aby cofnąć ostatni commit, użyj:

git revert HEAD

Git utworzy nowy commit, który cofnie wszystkie zmiany z poprzedniego commita.

Aby cofnąć konkretny commit, znajdź jego hash za pomocą:

git log --oneline

Po tym uruchom:

git revert 

Co to jest Git reset i jakie ma praktyczne znaczenie?

Git reset pozwala usunąć commity z bieżącej gałęzi i wrócić do poprzedniego stanu. W przeciwieństwie do revertu nie zachowuje historii anulowanych zmian.

Kiedy używać git reset?

Przykład użycia git reset

Soft reset (pozostawia zmiany w roboczym katalogu):

git reset --soft HEAD~1

Cofnie się o jeden commit, ale pozostawi wszystkie zmiany w staging area.

Mixed reset (pozostawia zmiany w roboczym katalogu, ale usuwa je ze staging area):

git reset --mixed HEAD~1

Hard reset (całkowicie usuwa ostatni commit i wszystkie zmiany w nim):

git reset --hard HEAD~1

Uwaga! Ten polecenie usunie wszystkie zmiany i nie będzie możliwe ich przywrócenie.

Git revert vs. Git reset: Główne różnice

Funkcja Git revert Git reset
Zachowuje historię commitów? Tak Nie
Odpowiednie dla zdalnego repozytorium? Tak Nie
Usuwa istniejące commity? Nie Tak
Możliwość przywrócenia po wykonaniu? Tak Nie (przy hard resecie)

Najczęściej zadawane pytania

1. Kiedy mam użyć git revert zamiast git reset?

Jeśli już wysłałeś zmiany do zdalnego repozytorium, użyj git revert. Git reset jest odpowiedni tylko do lokalnych zmian.

2. Jak cofnąć git reset?

Jeśli przypadkowo użyłeś git reset --hard, spróbuj przywrócić ostatni commit za pomocą:

git reflog
git reset --hard 

3. Czy mogę cofnąć kilka commitów naraz?

Tak, w przypadku git revert możesz podać więcej hash-y commitów:

git revert   

W przypadku git reset możesz ustawić, o ile commitów chcesz się cofnąć:

git reset --hard HEAD~3

Top 5 ciekawych faktów o Git revert i reset

  1. Git revert jest bezpieczniejszy, ponieważ zachowuje historię zmian.
  2. Git reset może trwale usunąć ważną pracę.
  3. Resetowanie nie jest zalecane w zespołach, gdzie wielu ludzi pracuje na tej samej gałęzi.
  4. Jeśli zresetujesz publiczny commit, może to spowodować problemy przy scalaniu kodu.
  5. Revertowanie dużych zmian może wymagać ręcznego rozwiązywania konfliktów.

Chcesz nauczyć się programować?

Jeśli jesteś zainteresowany szkoleniem programowania stacjonarnie lub online, zapoznaj się z naszą ofertą na www.like-it.sk. Nasze kursy prowadzą doświadczeni specjaliści, którzy pomogą Ci opanować programowanie od podstaw po zaawansowane techniki.

Marián Knězek