恢复复杂的合并

时间:2012-11-09 13:40:42

标签: git

我们有点乱,旧分支完成后续工作 这些都被合并到一个dev分支,但是在dev之间完成了其他工作 这样:

我们从开始时开始 然后分支到5.6.9
继续开发工作,但也在5.6.9上 所有关于5.6.9的工作都被合并到了开发中 一个分支是在dev的最新版本中创建的(在此阶段〜在5.6.9之前提交了1800个提交)然后合并到5.6.9 - 这是我们想要恢复的

我们没有线性历史记录,我们可以恢复到给定的提交,因为在dev之间的提交之间完成了5.6.9的工作,并且无法找到任何方法来找到合并的提交哈希作为日志的旧分支现在包含所有dev(即git log --merges显示所有功能分支合并到dev中,而不是合并到我们所做的5.6.9中)

是否有记录git保持所有合并?还有什么方法可以告诉它撤消合并(已被推送)?

2 个答案:

答案 0 :(得分:0)

你可以做一个

git log --grep Merge

获取你的提交。

然后:

git rebase --onto <commit-id>^ <commit-id> HEAD

应该处理它。

答案 1 :(得分:0)

对于合并提交,您可以按照sjakubowski的建议在git日志中进行grep。即

git log --grep Merge

然后,一旦找到合并提交,您可以通过

还原它

git revert -m 1 <merge_commit_id>

这应该有用。