Git undo

NB : les exemples utilisent les alias (par exemple git ci à la place de git commit) définis dans le paragraphe "Config" de la page Git, premier pas.

Supprimer des commits

Initialiser un dépôt et faire 3 commits :
git init repo2
cd repo2
echo 'ligne 1' > fichier1.txt
git add fichier1.txt
git ci -m "ligne 1"
echo 'ligne 2' >> fichier1.txt
git ci -am "ligne 2"
echo 'ligne 3' >> fichier1.txt
git ci -am "ligne 3"
Vérifiez que fichier1.txt contient bien les 3 lignes :
cat fichier1.txt
ligne 1
ligne 2
ligne 3
Vérifiez que vous avez bien 3 commits :
git slog
* dacf608 - (2019-02-25 01:15:56 +0100) ligne 3 - Thierry (HEAD -> main)
| 
* 9deb1fd - (2019-02-25 01:15:56 +0100) ligne 2 - Thierry
| 
* b9f002e - (2019-02-25 01:02:29 +0100) ligne 1 - Thierry
Pour supprimer complètement les deux derniers commits :
git reset --hard b9f002e
Vous pouvez vérifier avec git log, git status et en affichant fichier1.txt :
- les deux derniers commits ont été supprimés,
- Le répertoire de travail est revenu dans l'état du commit b9f002e.

git reset --hard efface donc de manière irréversible toute trace des commits effacés, à la fois dans l'historique des commits et sur le disque.