意外地分支了错误的分支,当我想合并到主服务器时,我必须合并两个分支

时间:2014-02-16 01:04:38

标签: git version-control merge

所以我创建了一个我已经创建的另一个分支的分支,现在当我尝试将分支合并到master中时,我遇到了必须合并两个分支的情况。

这是一张图

  

主 - >   

     
 ->Branch 1  -> Branch 2
  

我希望能够仅将分支2上的更改合并到master上,而不必合并分支1上的更改(如果有意义的话)。我查看了重置和恢复,但似乎这些事情将删除我用分支2做的所有更改。有什么想法吗?

由于

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>

有关详细信息,请参阅此帖子

How to merge a specific commit in Git