撤消git合并
我对Git没有什么经验,现在我遇到了一个大问题 以下是我当前的分支的外观:撤消git合并,git,merge,Git,Merge,我对Git没有什么经验,现在我遇到了一个大问题 以下是我当前的分支的外观: feature /---F1-----F2----\ / \ master -----M0-----M1-----M2-----M3-----M4 \ / bugfix \--B1-----B2-----------/ 情况: 有人做了一件非常糟糕的事情,推动了一
feature /---F1-----F2----\
/ \
master -----M0-----M1-----M2-----M3-----M4
\ /
bugfix \--B1-----B2-----------/
情况:
有人做了一件非常糟糕的事情,推动了一个非常糟糕的合并(M3)。我只是在将B1和B2合并到M4之后,当我们的模型(而不是源代码)无法加载时才注意到错误的合并。幸运的是,我还没有推M4
问题:
我怎样才能把事情重新安排好?我想要M0,M1,M2,F1,F2,B1和B2。但我不想要M3和M4(因为M4显然已损坏)。如果我不得不放弃更改,那么可以牺牲F1和F2:)
我查看了git revert,但我不确定自己是否完全理解它的工作原理。所以我真的希望能在如何解决这个问题上得到帮助
提前感谢。如果您尚未推送(发布)合并提交,请使用git reset。例如,在主分支上,假设您的工作树是干净的,那么执行git重置——很难
更多信息:
如果您确实发布了更改,则可能需要考虑做出回复提交。更多信息请点击此处:
为了澄清,你想要的是这个,对吗
feature /---F1-----F2
/
master -----M0-----M1-----M2
\
bugfix \--B1-----B2
确保HEAD
s功能
和bugfix
分别处于F2
和B2
状态
编辑:如果功能
和错误修复
没有分支,则将它们设为分支(如果未被限制,则隐藏您的工作):
编辑结束
然后将主机重置为M2:
git checkout master
git reset M2 --hard
(重置将使您丢失本地更改,如果不希望,请将其隐藏。)
M3
和M4
不会立即销毁,但最终会销毁。它们不应该出现在git日志或gitk中
然后是时候合并
功能
并生成一个正确的M3'
。是的,有点像,但“功能”、“主控”和“错误修复”实际上并不是分支,我怀疑这是令人困惑的。也就是说,3 ppl致力于自己的主分支机构的变更。一个人做了一个糟糕的合并,然后推了。我取消了错误的合并。现在我想要一种排除错误合并的方法,同时仍然保留所有单独的更改…那么功能
和错误修复
是否没有分支?当然,feature
的作者在自己的回购协议中有分支机构。您应该做的是将主机重置为M2,并要求功能
的作者执行相同的操作(但确保他不会丢失分支功能
),并再次正确地进行合并。如果你想亲自查看我的更新。你真的有一个没有master
分支的回购吗?我们有master
分支。好的,现在我明白你说的让另一个人重置这个分支是什么意思了。谢谢
git checkout master
git reset M2 --hard