Historia i cofanie zmian w Git
1. Wprowadzenie
Git pozwala na przeglądanie historii projektu i cofanie zmian. W tej lekcji nauczysz się: * Przeglądać historię commitów * Cofać zmiany * Poprawiać commity * Resetować repozytorium
2. Historia commitów
2.1. git log
2.2. git log dla konkretnego pliku
2.3. git log z filtrami
3. Wyświetlanie zmian
3.1. git show
Pokazuje szczegóły commita:
3.2. git show dla pliku
4. Cofanie zmian - różne metody
4.1. git restore (Git 2.23+)
Cofnięcie zmian w pliku (niezacommitowane):
Usunięcie z staging area:
4.2. git checkout (starsza metoda)
5. git reset
5.1. Typy reset
| Opcja | Working Directory | Staging Area | Historia |
|---|---|---|---|
--soft |
Bez zmian | Bez zmian | Resetuje |
--mixed (domyślny) |
Bez zmian | Resetuje | Resetuje |
--hard |
Resetuje | Resetuje | Resetuje |
5.2. git reset --soft
Cofa commity, ale zostawia zmiany w staging:
Użycie: Poprawianie ostatniego commita.
5.3. git reset --mixed (domyślny)
Cofa commity i usuwa ze staging:
5.4. git reset --hard
Cofa commity i usuwa WSZYSTKIE zmiany:
⚠️ UWAGA: Nieodwracalne! Tracisz zmiany!
6. git revert
Tworzy nowy commit cofający zmiany:
Różnica z reset:
* reset – zmienia historię (niebezpieczne dla pracy zespołowej)
* revert – dodaje nowy commit (bezpieczne)
7. Poprawianie commitów
7.1. git commit --amend
Poprawia ostatni commit:
7.2. Zmiana autora
8. Praktyczne przykłady
8.1. Cofnięcie niezacommitowanych zmian
8.2. Usunięcie pliku ze staging
8.3. Cofnięcie ostatniego commita
8.4. Cofnięcie commita z środka historii
9. git reflog
Pokazuje historię wszystkich operacji:
Output:
abc1234 HEAD@{0}: commit: Dodanie funkcji
xyz7890 HEAD@{1}: checkout: moving from main to feature
def5678 HEAD@{2}: commit: Naprawa błędu
9.1. Odzyskiwanie usuniętych commitów
10. git clean
Usuwa nieśledzone pliki:
11. Scenariusze
Scenariusz 1: Przypadkowy commit
Scenariusz 2: Push z błędem
⚠️ NIGDY nie używaj --force na współdzielonych branchach!
Scenariusz 3: Usunięty plik
12. Bezpieczne cofanie
✅ Bezpieczne:
git revert– na współdzielonych branchachgit reset– tylko na lokalnych branchachgit restore– dla niezacommitowanych zmian
❌ Niebezpieczne:
git reset --hard+git push --forcena main- Zmiana historii po push
13. Cheatsheet
| Komenda | Opis |
|---|---|
git log |
Historia commitów |
git show <commit> |
Szczegóły commita |
git restore <plik> |
Cofnij zmiany |
git restore --staged <plik> |
Usuń ze staging |
git reset --soft HEAD~1 |
Cofnij commit, zachowaj zmiany |
git reset --hard HEAD~1 |
Cofnij commit i zmiany |
git revert <commit> |
Cofnij commit (nowy commit) |
git commit --amend |
Popraw ostatni commit |
git reflog |
Historia operacji |
git clean -fd |
Usuń nieśledzone pliki |
14. Podsumowanie
Git pozwala na cofanie błędów:
- ✅
restore– dla niezacommitowanych zmian - ✅
reset– dla lokalnych commitów - ✅
revert– dla współdzielonych commitów - ✅
reflog– odzyskiwanie usuniętych commitów
Co dalej:
- Lekcja 8 – .gitignore
- Lekcja 9 – Stash
Umiesz już cofać zmiany w Git! ⏪