Comment est-il git revert
utilisé?
Cela peut sembler une question en double, mais lorsque les gens la posent, la réponse est souvent, utilisez git reset
comme pour Revenir à un commit par un hachage SHA dans Git?
Ensuite, quand quelqu'un demande comment utiliser les git reset
gens, répondez en disant que vous devez utiliser git revert
selon Git - comment revenir en arrière
Avant que vous ne le sachiez, 8 personnes différentes sont apparues avec leurs propres moyens uniques pour sauver le cul de l'OP, tout cela au-dessus de votre tête.
Essayons donc de coller le mémoire et d'écrire un guide des nuls git revert
.
Un scénario: vous vous êtes engagé deux fois à maîtriser et c'est mauvais. Vous avez poussé et d'autres personnes ont vos mauvais changements.
Vous voulez l'annuler. Ce n'est pas quelque chose que vous pouvez annuler manuellement dans le code vous-même, disons qu'un assistant ou un gestionnaire de paquets a changé des tonnes de choses partout - vous voulez juste tout remettre comme il était.
C'est cela le contrôle de source. Je suis sûr que c'est facile.
D'accord, vous allez l'utiliser git revert
mais comment?
Et après avoir couru git revert
, devez-vous faire autre chose après? Devez-vous valider les modifications effectuées ou revenir directement dans le dépôt ou quoi ??
De toute évidence, vous devrez pousser à nouveau et probablement annoncer vos balles à l'équipe.
git revert -n <commitToRevet>
ougit revert --no-commit <commitToRevet>
Utilisez git revert comme ceci:
git revert <insert bad commit hash here>
git revert
crée un nouveau commit avec les modifications qui sont annulées.git reset
efface votre historique git au lieu de faire un nouveau commit.Les étapes suivantes sont les mêmes que pour tout autre commit.
la source
La raison
reset
etrevert
tendance à revenir souvent dans les mêmes conversations est que différents systèmes de contrôle de version les utilisent pour signifier des choses différentes.En particulier, les personnes habituées à SVN ou P4 qui souhaitent supprimer les modifications non validées d'un fichier vont souvent chercher
revert
avant de se faire dire qu'elles le souhaitent réellementreset
.De même, l'
revert
équivalent dans d'autres VCS est souvent appelérollback
ou quelque chose de similaire - mais «rollback» peut aussi signifier «Je veux complètement supprimer les derniers commits», ce qui est appropriéreset
mais pasrevert
. Donc, il y a beaucoup de confusion où les gens savent ce qu'ils veulent faire, mais ne savent pas quelle commande ils devraient utiliser pour cela.Quant à vos questions réelles sur le retour ...
git revert first-bad-commit..last-bad-commit
Par défaut,
git revert
vous demande un message de validation, puis valide les résultats. Cela peut être annulé. Je cite la page de manuel :En particulier, par défaut, il crée un nouveau commit pour chaque commit que vous annulez. Vous pouvez utiliser
revert --no-commit
pour créer des modifications en les annulant toutes sans les valider en tant que commits individuels, puis vous engager à votre guise.la source
git revert first-bad-commit..last-bad-commit
: Je pense que cela devrait êtregit revert parent-of-first-bad-commit..last-bad-commit
.La question est assez ancienne mais le retour est toujours déroutant les gens (comme moi)
En tant que débutant, après quelques essais et erreurs (plus d'erreurs que d'essais), j'ai un point important:
git revert
nécessite l'ID du commit que vous souhaitez supprimer pour le conserver dans votre historiquegit reset
requiert le commit que vous souhaitez conserver et supprimera par conséquent tout ce qui suit de l'historique.Autrement dit, si vous utilisez
revert
avec le premier identifiant de commit, vous vous retrouverez dans un répertoire vide et un commit supplémentaire dans l'historique, tandis qu'avec reset votre répertoire sera .. retourné au commit initial et votre historique deviendra comme si le ou les derniers commit (s) ne se sont jamais produits.Pour être encore plus clair, avec un journal comme celui-ci:
L' utilisation
git revert cb76ee4
volonté par défaut apporter vos fichiers à 01b56c6 et ajoutera un autre engagement à votre histoire:git reset 01b56c6
à la place ramènera vos fichiers à 01b56c6 et nettoiera tout autre commit après cela de votre historique:Je sais que ce sont "la base" mais c'était assez déroutant pour moi, en exécutant
revert
sur le premier identifiant ('premier commit') je m'attendais à trouver mes fichiers initiaux, il a fallu un certain temps pour comprendre que si vous avez besoin de récupérer vos fichiers en tant que «premier commit», vous devez utiliser l'identifiant suivant.la source
J'ai annulé quelques commits en exécutant 'git revert commit id' tel que:
Ensuite, j'ai été invité à valider le retour (comme vous le feriez lors de l'exécution de 'git commit'). Mon programme de terminal par défaut est Vim donc j'ai couru:
Enfin, j'ai poussé le changement vers le référentiel avec:
la source