git merge --squash是我将另一个功能分支合并到我的主分支中所做的事情,只是为了稍后意识到我丢失了一些重要的历史,这是功能分支的一部分。
如果在我的合并提交之前有很多提交到主分支的提交,我如何将历史记录从功能分支返回到主分支?
如果我再次将功能分支合并到我的主分支中,它会解决问题吗?
答案 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%的提交有冲突)可能是一个警告,说你正在应用你之前合并的提交。