是否可以在git中合并分支并保留历史记录?

时间:2013-06-26 17:05:15

标签: git git-svn

我在工作中使用git-svn与我们的Subversion存储库进行交互。我创建了一个分支(让我们称之为FeatureBranch)来处理一个新功能,但不得不切换回主分支来处理其他事情。当我开始研究在FeatureBranch上应该完成的工作时,我忘了再次检查FeatureBranch并在实现我所做的事情之前向主分支做了几次提交。

我最初计划在执行以下操作来修复此问题(我还没有将我的更改提交给Subversion,所以它们都被归为最近我提交的提交):

git checkout FeatureBranch
git merge master
git checkout master
git reset --hard HEAD~n

其中 n 是我想要从主分支中删除的提交数,因为它们现在位于FeatureBranch中。但是,当合并到另一个分支时, git merge 似乎不会保留历史记录(它显示为单个提交)。如何将git中的某些提交合并到另一个分支,同时保留历史记录?我之前听说过 cherry-pick 一词,这是我应该研究的功能吗?

2 个答案:

答案 0 :(得分:2)

是的,你会想要使用git cherry-pick。您将完全 cherry pick 每次提交您想要带回主人的提交。

在没有解释整个挑选过程的情况下,这里有一些Docs getstarted

答案 1 :(得分:0)

您可以使用git rebase --onto实现这一目标。有关详细信息,请参阅git help rebase