Quel étrange outil de gestion, Git. Il peut y avoir tellement d'explications à un problème, et vous ne pouvez pas dire laquelle est la bonne en un coup d'œil. http://git-scm.com/blog/2010/03/02/undoing-merges.html Ceci est la réponse officielle après avoir fini de la lire, je la traduirai ici.
====================== La traduction simple commence ======================
Parce que trop de gens ont demandé comment annuler une fusion, git a officiellement publié ce tutoriel pour montrer comment atteindre l'objectif d'annuler une fusion dans le cadre du système idéologique existant de git.
Méthode 1, réinitialiser à la version avant la fusion, puis refaire l'opération suivante. Chaque collaborateur doit savoir comment restaurer le HEAD local :
Cela créera un nouveau commit pour compenser l'opération de fusion correspondante, et plus tard, git merge [la branche représentée par ce numéro] demandera :
Already up-to-date.
Parce que l’utilisation de la méthode 2 fera penser à tort à Git que les éléments de cette branche sont des choses dont nous ne voulons pas.
Troisième méthode , comment annuler la deuxième méthode :
======================Fin de la traduction simple====================
Au final, j'ai toujours l'impression que les premiers sont trop gênants. Pour ceux qui utilisent WebStorm pour écrire du code sur le front-end tous les jours, jetez un œil : WebStorm Cliquez avec le bouton droit sur le fichier ou le dossier du projet, et il y a un :
Historique local -> Afficher l'historique
Après avoir cliqué dessus, une fenêtre apparaîtra où vous pourrez voir tous les changements locaux. Trouvez celui de droite et appuyez sur celui dans le coin supérieur gauche :
Revenir
Le bouton
, qui est une petite flèche courbe violette, revient en arrière. C'est très utile lorsque la taille du fichier n'est pas importante et est fortement recommandé.
Si vous êtes sûr d'abandonner le commit de cette fusion, si vous avez fusionné la mauvaise branche avec master, utilisez d'abord git reflog ou gitg, gitk, qgit et d'autres outils pour déterminer le commit où se trouvait master avant la fusion, et puis utilisez-le sur la branche master git reset --hard <commit> Réinitialisez le pointeur de tête. De manière générale, exécuter git reset --hard HEAD~ directement sur le maître peut également revenir au commit avant la fusion, mais il est préférable d'utiliser un commit confirmé pour la commande git reset --hard. Notez que la commande git reset --hard est risquée. À moins que vous ne soyez sûr de vouloir abandonner la soumission actuelle, il est préférable de git branch créer une nouvelle référence de branche pour la soumission actuelle avant de continuer. correct.
S'il y a de nouveaux commits après une mauvaise fusion, vous pouvez utiliser git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支> pour reconstruire le nouveau commit sur le bon commit de fusion après avoir terminé la fusion correcte susmentionnée. La séquence de validation reconstruite par la commande git rebase --onto est préférablement linéaire, sinon les validations non linéaires deviendront linéaires. Si vous avez besoin de sauvegarder l'historique des soumissions non linéaires, vous pouvez envisager d'utiliser le paramètre --preserve-merges, mais le résultat est très peu fiable, selon le degré de non-linéarité de la soumission.
Si vous rencontrez un conflit lors de la fusion et souhaitez annuler l'opération et restaurer l'index, utilisez git merge --abort
git reset --hard peut revenir à un certain commit
git revert peut annuler un commit, et l'annulation générera un nouveau commit
Le rebase de Git n’a pas été étudié attentivement.
Quel étrange outil de gestion, Git. Il peut y avoir tellement d'explications à un problème, et vous ne pouvez pas dire laquelle est la bonne en un coup d'œil.
http://git-scm.com/blog/2010/03/02/undoing-merges.html Ceci est la réponse officielle après avoir fini de la lire, je la traduirai ici.
====================== La traduction simple commence ======================
Parce que trop de gens ont demandé comment annuler une fusion, git a officiellement publié ce tutoriel pour montrer comment atteindre l'objectif d'annuler une fusion dans le cadre du système idéologique existant de git.
Méthode 1, réinitialiser à la version avant la fusion, puis refaire l'opération suivante. Chaque collaborateur doit savoir comment restaurer le HEAD local :
.Méthode 2, lorsqu'il y a d'autres opérations et modifications après la fusion, git a également un moyen d'annuler la fusion, utilisez git revert :
Cela créera un nouveau commit pour compenser l'opération de fusion correspondante, et plus tard, git merge [la branche représentée par ce numéro] demandera :
Parce que l’utilisation de la méthode 2 fera penser à tort à Git que les éléments de cette branche sont des choses dont nous ne voulons pas.
Troisième méthode , comment annuler la deuxième méthode :
Ça y est, vous pouvez fusionner normalement, mais il risque d'y avoir beaucoup de conflits ! !
======================Fin de la traduction simple====================
Au final, j'ai toujours l'impression que les premiers sont trop gênants. Pour ceux qui utilisent WebStorm pour écrire du code sur le front-end tous les jours, jetez un œil : WebStorm Cliquez avec le bouton droit sur le fichier ou le dossier du projet, et il y a un :
Historique local -> Afficher l'historique
Après avoir cliqué dessus, une fenêtre apparaîtra où vous pourrez voir tous les changements locaux. Trouvez celui de droite et appuyez sur celui dans le coin supérieur gauche :
Revenir
Le bouton, qui est une petite flèche courbe violette, revient en arrière. C'est très utile lorsque la taille du fichier n'est pas importante et est fortement recommandé.
Si vous êtes sûr d'abandonner le commit de cette fusion, si vous avez fusionné la mauvaise branche avec master, utilisez d'abord
git reflog
ou gitg, gitk, qgit et d'autres outils pour déterminer le commit où se trouvait master avant la fusion, et puis utilisez-le sur la branche mastergit reset --hard <commit>
Réinitialisez le pointeur de tête. De manière générale, exécutergit reset --hard HEAD~
directement sur le maître peut également revenir au commit avant la fusion, mais il est préférable d'utiliser un commit confirmé pour la commandegit reset --hard
. Notez que la commandegit reset --hard
est risquée. À moins que vous ne soyez sûr de vouloir abandonner la soumission actuelle, il est préférable degit branch
créer une nouvelle référence de branche pour la soumission actuelle avant de continuer. correct.S'il y a de nouveaux commits après une mauvaise fusion, vous pouvez utiliser
git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支>
pour reconstruire le nouveau commit sur le bon commit de fusion après avoir terminé la fusion correcte susmentionnée. La séquence de validation reconstruite par la commandegit rebase --onto
est préférablement linéaire, sinon les validations non linéaires deviendront linéaires. Si vous avez besoin de sauvegarder l'historique des soumissions non linéaires, vous pouvez envisager d'utiliser le paramètre--preserve-merges
, mais le résultat est très peu fiable, selon le degré de non-linéarité de la soumission.B-R-A-N-C-H
/ --Fusionner
M-A-S-T-E-R----M
Vous pouvez utiliser la valeur de hachage de git reset --hard R et revenir à R. Retour de M après fusion vers R.
Je pense que git merge --abort est nécessaire ici
Si vous rencontrez un conflit lors de la fusion et souhaitez annuler l'opération et restaurer l'index, utilisez git merge --abort
git reset --hard peut revenir à un certain commit
git revert peut annuler un commit, et l'annulation générera un nouveau commit
Le rebase de Git n’a pas été étudié attentivement.
http://opensource.apple.com/source/Git/Git-26/src/git-htmldocs/howto/revert-a-faulty-merge.txt
Qui a le temps de le traduire ?