git merge --squash是我将另一个功能分支合并到我的主分支中的事情,只是后来才意识到我丢失了一些重要的历史记录,这是功能分支的一部分。
如果在合并提交的顶部已经有许多提交进入主分支,我如何将历史记录从功能分支恢复到主分支?
如果我再次将特征分支合并到我的主分支中,会解决这个问题吗?
发布于 2013-10-10 21:48:32
如果您在feature分支中合并,这看起来可能有点傻,因为您在squash合并和feature分支中有类似的更改,但历史记录将在那里。
如果您在已在feature分支中编辑的相同位置中更改了某些内容,那么您很可能必须解决一些合并冲突。
发布于 2013-10-10 23:52:02
如果您确实知道在主分支中遗漏了哪些提交,那么只需逐个对它们执行cherry-pick操作(每个分支都使用git cherry-pick <COMMIT-SHA>),或者使用rebase --interactive。
检出功能分支后,执行git rebase --interactive master (假设master是您的主分支)。你的$EDITOR将会弹出,在你的feature分支中有一个不在你的主分支中的提交列表,每个提交之前都有一个pick常量,它是一个简短的SHA散列。删除你知道已经被压缩到master中的提交行,并保存该文件将使git批量挑选它们。当然,如果出现冲突,您必须解决它们,但是存在大冲突(比如,80%的提交存在冲突)可能是一个警告,说明您正在应用先前合并的提交。
https://stackoverflow.com/questions/19297504
复制相似问题