我正在处理一个代码库的功能。我创建了一个特性分支(例如branch_1
),并在其之上创建了另一个分支(例如branch_2
)。我过去经常会在每次更新branch_1
时将branch_2
进行变基,但现在branch_1
被合并到了master
中,因此我想将branch_2
变基到master
,这样branch_2
就只包含它自己的变更了。我该如何做?这是正确的方法还是还有其他方法?
src/myproject (branch2)$ git rebase master
master
有一个来自branch_1
的单个合并提交,而branch_2
有一系列与该合并提交在功能上相似的提交。 在master
上进行变基将意味着引入该合并提交,然后在变基后重新播放相同的提交更改。 这绝对不是OP想要的历史记录。 - Tim Biegeleisenmaster
,feat1
基于master
,feat2
基于feat1
。feat2
升级到一个新的feat1
,可以执行以下操作:git fetch
git checkout origin/feat2
git merge origin/feat1
git push origin feat2
feat1
升级到新的 master
的步骤为:git fetch
git checkout origin/feat1
git merge origin/master
git push origin feat1
但是假设你想将上游分支切换到 feat2
,因为 feat1
已经被提交到了 master
分支。没问题。
git fetch
git checkout origin/feat2
git merge origin/master
git push origin feat2
您的请求有几种可能的解决方案。如果您对Mureinik的答案不满意,可以尝试使用git cherry-pick
重新构建您的分支。基本上,从master
创建一个新分支,并从branch_1
合并到master
的位置选择所有提交,一直到branch_2
的HEAD
提交。为此,您将需要使用类似以下命令的命令(假设您在新分支上):
git cherry-pick branch_2~10 branch_2
branch_1
合并后,branch_2
中有 10 次提交。未指定“提交回退”数量的 branch_2
是该分支的最新提交。请注意保留 HTML 标签。
branch_2
合并到branch_1
,然后再将branch_1
合并到master
呢?分支一直向前发展,所以这是可以做到的。此外,从branch_2
合并实际上是在branch_1
上进行的“提交”;无论如何都希望将其合并到master
。 - cst1992