git merge --squash 是我将另一个功能分支合并到我的主分支中所做的事情,只是后来意识到我丢失了一些重要的历史记录,这些历史记录是功能分支的一部分。
如果在我的合并提交之上有很多提交到主分支,我如何将历史记录从功能分支返回到主分支?
如果我再次将功能分支合并到我的主分支中,它会解决问题吗?
如果您确实知道您在主分支之外留下了哪些提交,那么只需cherry-pick
将它们一个一个(git cherry-pick <COMMIT-SHA>
每个)或使用rebase --interactive
.
签出功能分支后,执行git rebase --interactive master
(假设master
是您的主分支)。您的$EDITOR
将弹出,您的功能分支中的提交列表不在您的主要分支中,每个提交列表都由一个pick
常量和简短的 SHA 散列组成。删除你知道你已经压缩到的提交行master
并保存该文件将使git
他们批量挑选它们。当然,如果发生冲突,您必须解决冲突,但是如果发生大冲突(例如,80% 的提交有冲突)可能是一个警告,表明您正在应用之前合并的提交。
如果你在特性分支中合并,这可能看起来有点傻,因为你在壁球合并和特性分支中有类似的变化,但历史会在那里。
如果您在功能分支中已编辑的相同位置更改了某些内容,那么您很可能必须解决一些合并冲突。