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.
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.
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
.
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.
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.
LinkedInArticle connexe - Git Commit
- Afficher l'historique des validations pour une branche à l'aide de Git Log With Range
- Afficher les fichiers dans Git Commit
- Commits multiples à l'aide de Cherry-Pick dans Git
- Copier les commits d'une autre branche dans Git
- Git Afficher les changements dans le commit
- Modifier l'éditeur Git pour les commits