2012-10-17 72 views
0

一名开发人员将分支feature2合并到feature1中,并推送了结果,但错误地解决了一些合并冲突。我从feature1中检出了提交A,并在提交B中从feature2正确合并(AB与其他开发人员合并的提交相同)。Git:撤消已发布的合并提交并应用另一个提交合并

我将合并的结果提交给分离的头部,现在需要恢复其他开发人员的合并提交并将自己的合并应用到feature1。我怎样才能做到这一点?

回答

1

危险的方式:

1)标签的分离承诺,即git tag temp

2)结账feature1分支。

3)使用git reset --hard temp移动分支的本地副本以指向您的提交。

4)使用git push -f origin feature1覆盖origin上的诡计版本。

5)用git tag -d temp删除标签。

请谨慎操作,并使用gitk来查看您正在做的事情。确保当时没有人在使用origin。如果你是偏执的人,在你开始做所有这些之前,先标记你的同事的提交(这是一个好主意,以防你陷入困境)。

重要提示:如果其他人基于您的同事合并工作,请先仔细想想,然后再这样做。每个人最终都需要重新进行新的提交。

+0

是否有一个选项不会涉及重写'origin'上的历史记录? – spiffytech