Avant d'utiliser la réinitialisation, pensez à utiliser le retour en arrière afin de pouvoir toujours revenir en arrière.
https://www.pixelstech.net/article/1549115148-git-reset-vs-git-revert
Sur demande
Source : https://www.pixelstech.net/article/1549115148-git-reset-vs-git-revert
git reset vs git revert sonic0002 2019-02-02 08:26:39
Lorsque l'on maintient du code à l'aide de systèmes de contrôle de version tels que git, il est inévitable que l'on doive revenir en arrière sur certains commits erronés, soit à cause de bogues, soit à cause d'un changement de code temporaire. Dans ce cas, les développeurs débutants sont très nerveux parce qu'ils ne savent plus ce qu'ils doivent faire pour annuler leurs changements sans affecter les autres, mais pour les développeurs expérimentés, c'est leur travail de routine et ils peuvent vous montrer différentes façons de le faire. Dans cet article, nous allons présenter deux méthodes principales fréquemment utilisées par les développeurs.
Quelles sont leurs différences et les cas d'utilisation correspondants ? Nous allons les examiner en détail ci-dessous. git reset Supposons que nous ayons quelques commits ci-dessous. ![enter image description here]()
Les commit A et B sont des commits qui fonctionnent, mais les commit C et D sont des mauvais commits. Maintenant nous voulons revenir au commit B et abandonner les commit C et D. Actuellement HEAD pointe sur le commit D 5lk4er, nous devons juste pointer HEAD sur le commit B a0fvf8 pour obtenir ce que nous voulons. Il est facile d'utiliser la commande git reset.
git reset --hard a0fvf8
Après avoir exécuté la commande ci-dessus, le HEAD pointera vers le commit B. ![enter image description here]()
Mais maintenant l'origine distante a toujours HEAD point à commettre D, si nous utilisons directement git push pour pousser les changements, il ne mettra pas à jour le repo distant, nous devons ajouter une balise -f pour forcer la mise en place des changements.
git push -f
L'inconvénient de cette méthode est que tous les commits après HEAD disparaîtront une fois la réinitialisation effectuée. Si un jour nous trouvons que certains des commits étaient bons et que nous voulons les garder, il est trop tard. Pour cette raison, de nombreuses entreprises interdisent l'utilisation de cette méthode pour annuler des changements.
git revert L'utilisation de git revert est de créer un nouveau commit qui renverse un commit précédent. Le HEAD pointera vers le nouveau commit d'annulation. Pour l'exemple de git reset ci-dessus, ce que nous avons besoin de faire est juste de revenir sur le commit D et ensuite sur le commit C.
git revert 5lk4er
git revert 76sdeb
Maintenant, il crée deux nouveaux engagements D' et C', ![enter image description here]()
Dans l'exemple ci-dessus, nous avons seulement deux commits à inverser, donc nous pouvons inverser un par un. Mais que faire s'il y a beaucoup de commits à inverser ? Nous pouvons inverser une gamme en effet.
git revert OLDER_COMMIT^..NEWER_COMMIT
Cette méthode n'aurait pas l'inconvénient de git reset il pointerait HEAD vers le commit de retour en arrière nouvellement créé et il est possible de pousser directement les changements vers le distant sans utiliser l'attribut -f option. Examinons maintenant un exemple plus difficile. Supposons que nous avons trois commits mais que le mauvais commit est le deuxième. ![enter image description here]()
Ce n'est pas une bonne idée d'utiliser git reset pour annuler le commit B puisque nous devons garder le commit C car c'est un bon commit. Maintenant, nous pouvons revenir sur les commit C et B et ensuite utiliser la commande cueillir des cerises pour commettre à nouveau C. ![enter image description here]()
D'après l'explication ci-dessus, nous pouvons constater que la plus grande différence entre git reset et git revert c'est que git reset réinitialisera l'état de la branche à un état antérieur en abandonnant toutes les modifications postérieures au commit souhaité alors que git revert réinitialisera à un état antérieur en créant de nouveaux commits de retour et conservera les commits originaux. Il est recommandé d'utiliser git revert au lieu de git reset dans un environnement d'entreprise. Référence : https://kknews.cc/news/4najez2.html
0 votes
Duplicata possible de Comment ignorer l'erreur sur le pull git indiquant que mes modifications locales seront écrasées par la fusion ?
25 votes
Il s'agit d'une question plus explicite, avec plus de détails et une meilleure réponse. Je pense qu'il est utile de garder celle-ci. Oui, l'autre question a été techniquement posée en premier, mais la suppression de celle-ci rendrait plus difficile pour les gens de trouver les réponses qu'ils recherchent.