合并后Git合并并恢复

时间:2012-06-01 16:06:26

标签: git merge

一点背景:

代码库的主分支

代码库的dev分支

两者都在进行(我知道,但我刚开始这个项目,所以我不应该责备)

有一次,dev被错误地合并回master,然后一些提交后来所有这些更改都被还原(手动,看起来像)

现在,我需要将dev合并为master for real,但所有意外合并然后还原的更改当然都会丢失。

除了在合并后手动进行更改之外,我不太清楚该怎么做。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我建议interactive rebase。删除恢复更改并修复任何合并冲突的提交。

答案 1 :(得分:1)

git的精彩之处在于它的灵活性以及实际删除内容的难度。

这是接近它的一种方法:

git checkout master
git log (make note of all commits on master that you want which were done after the incorrect merge)
git reset --hard <commit before dev was merged in in error>
git cherry-pick <id's of commits previously identified>
git merge develop (to do the desired merge)

正如在另一个答案中提到的,交互式变基也是一种选择。您可以使用它来删除引入错误合并的提交以及还原它的提交。

请注意,您将重写历史记录,因此您将不得不使用--force推送到共享存储库并让其他开发人员知道,以便他们可以重新克隆,或将更改拉入新分支在继续进行这些更改之前确保与团队协调非常重要。