因此,我从已经创建的另一个分支创建了一个分支,现在当我尝试将分支合并到主分支时,我遇到了必须合并两个分支的情况。
这是一个图表
主站 -> 分支 1 -> 分支 2
我希望能够仅将分支 2 上的更改合并到主分支上,而不必合并分支 1 上的更改(如果有意义的话)。我研究了重置和恢复,但似乎这些东西会删除我在分支 2 中所做的所有更改。有什么想法吗?
尝试使用以下语法 git rebase --onto :
将branch2的更改放到master上,而不包括branch1的
git rebase --onto master branch1 branch2
git help rebase
的相关输出:
以下是如何将基于一个分支的主题分支移植到另一个分支,以 假设您使用
从后一个分支分叉了主题分支。rebase --onto
首先让我们假设您的topic基于分支next。例如,一个特征 在 topic 中开发的功能取决于 next 中的某些功能。
o---o---o---o---o master \ o---o---o---o---o next \ o---o---o topic
我们想让topic从分支master分叉出来;例如,因为功能 topic 所依赖的分支已合并到更稳定的 master 分支中。 我们希望我们的树看起来像这样:
o---o---o---o---o master | \ | o'--o'--o' topic \ o---o---o---o---o next
我们可以使用以下命令来获取它:
git rebase --onto master next topic
请记住这里提到的变基的风险和陷阱: http://git-scm.com/book/en/Git-Branching-Rebasing
一种方法是使用
cherry-pick
。执行 git log branch2
并找到您想要的提交 ID,然后使用 master
切换到 git checkout master
分支,然后使用 git cherry-pick <commit_id>
更多详情请参考这篇文章