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:
- Otwórz konflikty w edytorze (np. VSCode).
- Po ich rozwiązaniu zapisz pliki.
- 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
| Akcja | Polecenie |
|---|---|
| Wyświetlenie refloga | git reflog |
| Przejście do konkretnego commita | git checkout <hash> |
| Powrót na gałęź | git checkout <nazwa_gałęzi> |
| Cherry-pick commita | git cherry-pick <hash> |
| Rozwiązanie konfliktów | git cherry-pick --continue |
| Anulowanie cherry-pick | git cherry-pick --abort |
| Weryfikacja historii | git log --oneline --graph |
| Wysyłanie zmian | git 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