2

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

我最初计划执行以下操作来解决这个问题(我还没有将我的更改提交到 Subversion,所以它们都被归为我最近所做的提交):

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

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

4

2 回答 2

2

是的,你会想为此使用 git cherry-pick 。从字面上看,您将严格挑选您想要带回大师的每个提交。

在不解释整个挑选过程的情况下,这里有一些文档可以帮助入门

于 2013-06-26T17:08:41.660 回答
0

您可以使用git rebase --onto. 详情见git help rebase

于 2013-06-26T19:31:49.020 回答