Cheatsheet: Ratowanie commitów w Git

Czasami podczas pracy w Git może zdarzyć się, że commit zostanie utracony lub zapomniany. Oto szybki przewodnik, jak odzyskać takie zmiany i dodać je z powrotem do aktywnej gałęzi.


1. Zlokalizowanie utraconego commita

Użyj git reflog, aby wyświetlić historię wszystkich ostatnich akcji, takich jak checkouty, commity czy mergowanie:

git reflog

Znajdź commit, który chcesz odzyskać. Powinien wyglądać podobnie:

097c4ca HEAD@{5}: commit: Ustalenie kolejności stacji, daty pomiarów, dodanie select dystrykt

2. Sprawdzenie zawartości commita

Możesz przejść do konkretnego commita, aby zobaczyć jego zawartość:

git checkout <hash>

Wprowadża Cię to w detached HEAD state, gdzie możesz podejrzeć pliki.


3. Powrót na aktywną gałęź

Przełącz się z powrotem na gałęź, do której chcesz dodać zmiany (np. HBV_ENS):

git checkout HBV_ENS

4. Dodanie utraconego commita do gałęzi

Użyj git cherry-pick, aby skopiować zmiany z utraconego commita do aktualnej gałęzi:

git cherry-pick <hash>

Przykład:

git cherry-pick 097c4ca

5. Rozwiązywanie konfliktów (jeśli wystąpią)

Jeśli zmiany z commita powodują konflikty, Git zatrzyma proces i poprosi o ich rozwiązanie. W takiej sytuacji:

  1. Otwórz konflikty w edytorze (np. VSCode).
  2. Po ich rozwiązaniu zapisz pliki.
  3. Kontynuuj proces cherry-pick: git cherry-pick --continue

Jeśli chcesz przerwać cherry-pick:

git cherry-pick --abort

6. Weryfikacja

Sprawdź historię commitów, aby upewnić się, że commit został dodany do gałęzi:

git log --oneline --graph

7. Przesłanie zmian do zdalnego repozytorium (opcjonalnie)

Jeśli chcesz przesłać zmiany do zdalnego repozytorium:

git push origin <nazwa_gałęzi>

Przykład:

git push origin HBV_ENS

Podsumowanie komend

AkcjaPolecenie
Wyświetlenie reflogagit reflog
Przejście do konkretnego commitagit checkout <hash>
Powrót na gałęźgit checkout <nazwa_gałęzi>
Cherry-pick commitagit cherry-pick <hash>
Rozwiązanie konfliktówgit cherry-pick --continue
Anulowanie cherry-pickgit cherry-pick --abort
Weryfikacja historiigit log --oneline --graph
Wysyłanie zmiangit push origin <nazwa_gałęzi>

Teraz wiesz, jak uratować commity i dodać je z powrotem do aktywnej gałęzi. Pamiętaj, aby zawsze sprawdzać, na jakiej gałęzi pracujesz, użyjąc git status