不小心分支出了错误的分支,当我想合并到主分支时,我必须合并两个分支
Posted
技术标签:
【中文标题】不小心分支出了错误的分支,当我想合并到主分支时,我必须合并两个分支【英文标题】:Accidentally branched off of the wrong branch, and when I want to merge into the master I have to merge both branches 【发布时间】:2014-03-15 09:10:25 【问题描述】:所以我从我已经创建的另一个分支创建了一个分支,现在当我尝试将分支合并到 master 时,我遇到了必须合并两个分支的情况。
这是一个图表
大师->
->Branch 1 -> Branch 2
我希望能够仅将分支 2 上的更改合并到 master 上,而无需合并分支 1 上的更改(如果有意义的话)。我查看了重置和恢复,但似乎这些东西会删除我对分支 2 所做的所有更改。有什么想法吗?
谢谢
【问题讨论】:
假设你的意思是git
,你想要git rebase --onto
。
【参考方案1】:
使用以下语法尝试 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
【讨论】:
我来这里是因为我做了和 OP 一样的事情。 IE。我不小心将我的本地功能/功能 1 分支为功能/功能 2。并且应该将开发标记为 features/feature2。看起来 rebase --onto 会做我想做的事,但是我应该在运行 rebase 之前检查三个分支之一吗?我想我需要先提交对 features/feature2 的更改??【参考方案2】:一种方法是使用cherry-pick
。执行git log branch2
并找到您想要的提交ID,然后使用git checkout master
切换到master
分支,然后使用git cherry-pick <commit_id>
更多详情请参考这篇文章
How to merge a specific commit in Git
【讨论】:
以上是关于不小心分支出了错误的分支,当我想合并到主分支时,我必须合并两个分支的主要内容,如果未能解决你的问题,请参考以下文章
将 git repo 分支(具有不同的历史记录)合并到主分支 [重复]