Annuler un commit dans Git
- Annuler le commit dans Git - Réinitialisation matérielle
- Annuler le commit dans Git - Réinitialiser Git
- Annuler le commit dans Git - Réinitialisation logicielle Git
- Annuler le commit dans Git - Récupérer les fichiers de réinitialisation matérielle
Cet article est sur le point de nous guider sur la façon de récupérer ce que nous ne voulons pas faire en utilisant Git commit. Git n’est pas si compliqué que nous ayons besoin d’un grand processus pour résoudre notre problème particulier, mais c’est plus que le problème qui est causé est si grand que différentes techniques sont nécessaires en fonction du problème et du résultat souhaité.
Il y a de nombreux aspects de Git qui sont faciles à comprendre, mais revenir là où nous étions avant est beaucoup plus facile et appréciable ; il est plus facile d’annuler des modifications majeures dans un référentiel. C’est un moment un peu effrayant quand on ne sait pas comment cela s’effectue à l’aide de commandes. Mais en réalité, il est étonnamment facile de faire de petites choses comme valider ou annuler les commits.
Mais que feriez-vous dans ce cas pour annuler votre commit
indésirable, puis valider
vos nouvelles modifications.
Disons que si vous avez apporté des modifications et que vous avez ensuite validé les modifications, à cette fin, il existe quatre méthodes pour le faire :
Annuler le commit dans Git - Réinitialisation matérielle
Si vous avez ceci, où 40 est votre HEAD
et (42) est l’état de nos fichiers.
(42)
38-39-40
↑
Head
Et vous voulez annuler le commit 40 et ne voulez plus jamais le revoir et effacer toutes les modifications dans les fichiers modifiés localement.
Nous utiliserons la commande suivante :
git reset --hard HEAD ~ 1
Production :
(42)
38-39
↑
Head
Maintenant, 39 est le HEAD
. Parce que dans l’exemple ci-dessus, nous avons utilisé --hard
, maintenant vos fichiers sont réinitialisés à leur état au début de le commit, qui est la 39e validation.
Annuler le commit dans Git - Réinitialiser Git
Supposons que le dernier commit 40 n’était pas un gros problème, mais juste un peu décalé. Maintenant, nous voulons annuler le commit mais conserver nos modifications. En repartant d’ici, avec 40 comme HEAD
:
(42)
38-39-40
↑
Head
Plutôt que d’utiliser le paramètre --hard
, nous utiliserons la commande suivante :
git reset HEAD ~ 1
Production :
(42)
38-39-40
↑
Head
Comme nous l’avons vu dans les deux cas, HEAD
définit simplement le dernier commit. Lorsque nous effectuons un git reset HEAD~1
, la commande Git déplace le pointeur HEAD
vers un commit. Mais (à moins que vous n’utilisiez --hard
), nous laissons nos fichiers tels qu’ils étaient auparavant. Nous n’y avons rien perdu.
Annuler le commit dans Git - Réinitialisation logicielle Git
Sur une note plus légère, vous pouvez même annuler notre commit mais laisser nos fichiers et notre index en utilisant ce qui suit :
git reset --soft HEAD ~ 1
Cela ne laissera pas seulement nos fichiers là-bas; il y laisse même notre index seul. Lorsque nous faisons git status
, nous verrons que les mêmes fichiers sont dans l’index qu’avant. En fait, nous verrons après cette commande, nous pourrions faire git commit
et referions le commit précédent que nous venons d’avoir.
Annuler le commit dans Git - Récupérer les fichiers de réinitialisation matérielle
Supposons que nous annulions un commit comme dans le premier exemple d’option, mais réalisions ensuite que nous en avions besoin par la suite. Que faire maintenant?
Ne vous inquiétez pas, et il y a encore un moyen de le récupérer. Nous allons utiliser la commande git reflog
et voir une liste des commits (inachevés) dans lesquels nous nous sommes déplacés. Trouvez le commit que nous avons détruit et faites ceci :
git checkout -b BranchName CommitYouDestroyed
Nous avons maintenant restauré ce commit. Dans Git, les commits ne sont pas supprimés pendant 90 jours à compter du jour où ils ont été supprimés, nous pouvons donc facilement les restaurer en tant que sauvegarde dans les référentiels.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn