撤消git merge --squash

时间:2013-10-10 13:44:38

标签: git merge

git merge --squash是我将另一个功能分支合并到我的主分支中所做的事情,只是为了稍后意识到我丢失了一些重要的历史,这是功能分支的一部分。

如果在我的合并提交之前有很多提交到主分支的提交,我如何将历史记录从功能分支返回到主分支?

如果我再次将功能分支合并到我的主分支中,它会解决问题吗?

2 个答案:

答案 0 :(得分:0)

如果你在功能分支中合并,这可能看起来有些愚蠢,因为你在壁球合并和功能分支中有类似的变化,但历史将在那里。

如果您在功能分支中编辑的相同位置更改了某些内容,则很可能必须解决某些合并冲突。

答案 1 :(得分:0)

如果你确实知道你从主分支中遗漏了什么,只需逐一cherry-pick,(每个git cherry-pick <COMMIT-SHA>),或者使用rebase --interactive。< / p>

检查完功能分支后,执行git rebase --interactive master(假设master是您的主要分支)。您的$EDITOR会弹出,其功能分支中的提交列表不在您的主要提交中,每个提交都由pick常量预先填充,并且是短SHA哈希。删除你知道已经压缩到master的提交行并保存该文件会使git批量挑选它们。当然,如果出现冲突,你必须解决冲突,但是有大的冲突(比如80%的提交有冲突)可能是一个警告,说你正在应用你之前合并的提交。