所以我创建了一个我已经创建的另一个分支的分支,现在当我尝试将分支合并到master中时,我遇到了必须合并两个分支的情况。
这是一张图
主 - >
->Branch 1 -> Branch 2
我希望能够仅将分支2上的更改合并到master上,而不必合并分支1上的更改(如果有意义的话)。我查看了重置和恢复,但似乎这些事情将删除我用分支2做的所有更改。有什么想法吗?
由于
答案 0 :(得分:66)
使用以下语法尝试git rebase --onto:
将branch2的更改放在master上,而不包括branch1的
git rebase --onto master branch1 branch2
git help rebase
的相关输出:
以下是如何将基于一个分支的主题分支移植到另一个分支 假设您使用
rebase --onto
从后一个分支分叉主题分支。首先让我们假设您的主题基于分支 next 。例如,一个功能 在主题中开发的内容取决于 next 中的某些功能。
o---o---o---o---o master \ o---o---o---o---o next \ o---o---o 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
答案 1 :(得分:9)
一种方法是使用cherry-pick
。执行git log branch2
并找到您想要的提交ID,然后使用master
切换到git checkout master
分支,然后使用git cherry-pick <commit_id>
有关详细信息,请参阅此帖子