Annuler un commit avant de pousser le référentiel distant dans Git

Azhar Bashir Khan 6 février 2022
Annuler un commit avant de pousser le référentiel distant dans Git

Ce didacticiel explique comment réinitialiser un commit qui n’a pas été poussé vers le référentiel distant dans Git, un système de contrôle de version que nous utilisons pour suivre les modifications apportées aux fichiers dans notre répertoire de projet.

Dans Git, les commits sont utilisés pour suivre les modifications apportées aux fichiers. Parfois, nous pouvons valider les modifications des fichiers localement et plus tard, nous pouvons penser que ces modifications ne sont plus pertinentes.

Nous voulons maintenant réinitialiser ce commit au lieu de pousser ce commit vers le référentiel distant. Nous pouvons accomplir cette tâche de réinitialisation d’un commit qui n’a pas encore été envoyé à distance en utilisant la commande git reset.

Annuler un commit avant de pousser vers le référentiel distant dans Git

Nous utilisons Git dans un environnement de développement collaboratif pour suivre les modifications apportées aux fichiers. Git accomplit cette tâche de suivi des modifications apportées aux fichiers à l’aide de validations.

Lorsque nous sommes satisfaits des modifications apportées aux fichiers, nous validons les modifications dans le référentiel Git de notre projet. Dans un flux de travail Git de base, une fois que nous avons testé et terminé nos modifications, nous ajoutons les modifications à la zone de préparation. Nous utilisons la commande git add pour cela.

Après avoir ajouté les modifications à la zone de préparation, nous procédons maintenant à le commit de la modification dans notre référentiel Git. Nous utilisons la commande git commit pour valider les modifications.

Chaque validation est utilisée pour enregistrer un instantané de l’état du référentiel ainsi que le nom, l’horodatage et le message. Lorsque nous validons des modifications à l’aide de la commande git commit, ces modifications sont validées dans le référentiel Git local.

Ce référentiel local est associé à un référentiel Git distant. Nous procédons ensuite au push des commits du référentiel Git local vers le référentiel distant. Nous utilisons la commande git push pour y parvenir.

Parfois, avant de pousser le commit vers le référentiel distant, nous pouvons penser que le commit actuel dans le référentiel local n’est plus nécessaire et nous souhaitons le supprimer.

Ainsi, pour supprimer le commit du dépôt local, nous pouvons utiliser la commande git reset. Supposons que nous ayons un historique de validation comme suit dans notre référentiel Git.

$ git log --oneline
453dcfc (HEAD -> master) minor change
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...

Dans l’historique des commits, le commit 453dcfc est dans le dépôt Git local mais pas encore dans le dépôt distant. Les commits précédents se trouvent également dans le référentiel distant.

Ainsi, pour écarter un commit présent dans le dépôt local et pas encore poussé vers le dépôt distant, on peut exécuter la commande git reset comme suit.

$ git reset --soft HEAD~1

La commande git reset ci-dessus réinitialise le HEAD actuel d’un commit. La commande git reset avec l’option --soft ne touche pas à la zone de staging et à l’arbre de travail.

Il conserve tous nos fichiers modifiés en tant que Changes to be committed, comme le dirait git status, comme suit.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   README.md

Nous pouvons maintenant revérifier l’historique des commits et constater que le commit 453dcfc n’est plus présent.

$ git log --oneline
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...

Nous avons montré comment réinitialiser un commit qui n’a pas été poussé vers le référentiel distant dans Git.

Pour plus d’informations, veuillez visiter ces liens.

  1. git-reset
  2. git reset

Article connexe - Git Reset