Annuler le dernier commit Git dans un dépôt local

John Wachira 15 février 2024
Annuler le dernier commit Git dans un dépôt local

Cet article explique comment annuler le dernier commit dans Git. Cela est pratique lorsque nous voulons supprimer les modifications introduites par un commit avant de le pousser vers le référentiel distant.

Allons droit au but.

Annuler le dernier commit sans modifier les fichiers dans Git

Nous commencerons par discuter de la manière dont nous pouvons annuler un commit pendant que les modifications précédentes sont apportées aux fichiers. Pour ce faire, nous utilisons la commande git reset avec l’argument -soft pour demander à Git de conserver le contenu de notre fichier.

$ git reset --soft HEAD~1

La commande ci-dessus supprimera le dernier commit sur notre HEAD.

Prenons un exemple. Voici l’historique des commits dans notre dépôt local.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) Added a new file named "file.txt"
* 3b641e0  Second commit
* 21ca1e7  Initial commit

Exécutons la commande git reset et vérifions son impact sur notre dépôt local.

réinitialisation de git

La sortie ci-dessus montre que notre file.txt est dans notre index, mais le commit n’est pas présent. Nous pouvons apporter des modifications au fichier et le valider à nouveau.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) (HEAD)
* 3b641e0  Second commit (HEAD~1)
* 21ca1e7  Initial commit (HEAD~2)

Notre commande $ git reset --soft HEAD~1 supprime le dernier commit. Si nous devions supprimer les deux derniers commits, nous aurions plutôt utilisé $ git reset --soft HEAD~2 et ainsi de suite.

Parfois, nous pouvons vouloir éliminer le commit et les fichiers. Nous utilisons la commande git reset avec l’option -hard, comme indiqué ci-dessous.

$ git reset --hard HEAD~1

La commande ci-dessus supprimera toutes les modifications associées au commit de notre index et de notre répertoire de travail.

Prenons un exemple. Voici un visuel de notre historique de commit.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) Added a new file named "file.txt"
* 3b641e0  Second commit
* 21ca1e7  Initial commit

Dans ce scénario, nous aimerions supprimer le dernier commit et supprimer les modifications.

Nous courrons:

$ git reset --hard HEAD~1
HEAD is now at 3b641e0 Second commit

Lançons la commande git status pour vérifier l’état de notre dépôt.

statut git

La sortie ci-dessus montre que Git a supprimé les fichiers de notre index et de notre répertoire de travail.

Nous pouvons également avoir besoin d’annuler le dernier commit et de conserver les modifications dans le répertoire de travail, mais sur notre index. Pour ce faire, nous ajoutons l’option --mixed à notre commande git reset, comme indiqué ci-dessous.

$ git reset --mixed HEAD~1

Prenons un exemple. Il s’agit de l’état actuel de notre historique de validation.

$ git log --oneline --graph
* c5bf6c8  (HEAD -> master) Added a new file named "file.txt"
* 3b641e0  Second commit
* 21ca1e7  Initial commit

Nous courrons:

$ git reset --mixed HEAD~1

Nos fichiers doivent être visibles dans le répertoire de travail mais absents de l’index. Confirmons cela avec la commande git status.

confirmer avec le statut git

Nous pouvons voir que notre file.txt est sous des fichiers non suivis. C’est une autre façon d’annuler un commit tout en conservant les modifications.

Auteur: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Article connexe - Git Commit