不小心从错误的分支分支出来,当我想合并到master时我必须合并两个分支

问题描述 投票:0回答:2

因此,我从已经创建的另一个分支创建了一个分支,现在当我尝试将分支合并到主分支时,我遇到了必须合并两个分支的情况。

这是一个图表

主站 -> 分支 1 -> 分支 2

我希望能够仅将分支 2 上的更改合并到主分支上,而不必合并分支 1 上的更改(如果有意义的话)。我研究了重置和恢复,但似乎这些东西会删除我在分支 2 中所做的所有更改。有什么想法吗?

git version-control merge
2个回答
104
投票

尝试使用以下语法 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


14
投票

一种方法是使用

cherry-pick
。执行
git log branch2
并找到您想要的提交 ID,然后使用
master
切换到
git checkout master
分支,然后使用
git cherry-pick <commit_id>

更多详情请参考这篇文章

如何在 Git 中合并特定提交

© www.soinside.com 2019 - 2024. All rights reserved.