develop branch
--> dashboard (working branch)
J'utilise git merge --no-ff develop
pour fusionner toutes les modifications en amont dans le tableau de bord
journal git:
commit 88113a64a21bf8a51409ee2a1321442fd08db705
Merge: 981bc20 888a557
Author: XXXX <>
Date: Mon Jul 30 08:16:46 2012 -0500
Merge branch 'develop' into dashboard
commit 888a5572428a372f15a52106b8d74ff910493f01
Author: root <[email protected]>
Date: Sun Jul 29 10:49:21 2012 -0500
fixed end date edit display to have leading 0
commit 167ad941726c876349bfa445873bdcd475eb8cd8
Author: XXXX <>
Date: Sun Jul 29 09:13:24 2012 -0500
La fusion contenait environ 50+ validations, et je me demande comment annuler la fusion pour que le tableau de bord revienne à l'état antérieur à la fusion
La deuxième partie de ceci est, si je ne fais pas de fusion avec --no-ff
, je n'obtiens pas le commit ' Merge branch' develop 'into dashboard ' .. Comment pourrais-je annuler cette fusion?
Réponses:
Le fait d'annuler un commit de fusion a été traité de manière exhaustive dans d' autres questions. Lorsque vous effectuez une fusion à avance rapide, la seconde que vous décrivez, vous pouvez utiliser
git reset
pour revenir à l'état précédent:Vous pouvez trouver
<commit_before_merge>
avecgit reflog
,git log
ou, si vous vous sentez le Moxy (et ont rien fait d' autre):git reset --hard HEAD@{1}
la source
reflog
une bouée de sauvetage.HEAD@{1}
décrit simplement le deuxième état le plus récent de HEAD, ou plus techniquement: "Une référence suivie du suffixe @ avec une spécification ordinale entourée d'une paire d'accolades (par exemple {1}, {15}) spécifie la n-ième valeur antérieure de cette réf. "D'ici:
http://www.christianengvall.se/undo-pushed-merge-git/
Git revert ajoute un nouveau commit qui annule le commit spécifié.
L'utilisation de -m 1 indique qu'il s'agit d'une fusion et que nous voulons revenir au commit parent sur la branche principale. Vous utiliseriez -m 2 pour spécifier la branche de développement.
la source
here
lien dans le commentaire @Hilikus n'est plus valide. Le site prétend que le contenu a été déplacé vers un livre ( git-scm.com/book/en/v2 ) mais si c'est le cas, il n'est pas trivial de s'y retrouver.Réinitialisez simplement le commit de fusion avec
git reset --hard HEAD^
.Si vous utilisez --no-ff, git crée toujours une fusion, même si vous n'avez rien validé entre les deux. Sans --no-ff, git fera simplement une avance rapide, ce qui signifie que vos branches HEAD seront définies sur HEAD de la branche fusionnée. Pour résoudre ce problème, recherchez l'ID de validation auquel vous souhaitez revenir et
git reset --hard $COMMITID
.la source
Mais peut avoir des effets secondaires inattendus. Voir l'
--mainline parent-number
option dans git-scm.com/docs/git-revertUn moyen brut mais efficace serait de vérifier le parent de gauche de ce commit, de faire une copie de tous les fichiers, de
HEAD
reprendre et de remplacer tout le contenu par les anciens fichiers. Ensuite, git vous dira ce qui est annulé et vous créez votre propre commit de retour :)!la source
Reverting a merge commit declares that you will never want the tree changes brought in by the merge. As a result, later merges will only bring in tree changes introduced by commits that are not ancestors of the previously reverted merge. This may or may not be what you want.
git reset
c'est la solution, mais mentionnez également qu'elle pourrait avoir des effets secondaires inattendus. Cependant, ce lien vient degit revert
, pasgit reset
:)git revert
nongit reset
Si vous avez fusionné la branche, puis annulé la fusion à l'aide d'une demande d'extraction et fusionné cette demande d'extraction pour revenir.
La façon la plus simple que je ressentais était de:
git revert -m 1 xxxxxx
(si le retour a été fusionné en utilisant une branche) ou en utilisantgit revert xxxxxx
s'il s'agissait d'un retour simplela source