首页 > 解决方案 > 将从另一个分支签出的分支变基到 master 上,而不拖动第一个分支的提交

问题描述

我正在与 git 的特殊情况作斗争。

简而言之,我正在尝试重新设置一个分支 ( feature/tracking-refactor),该分支 () 是从另一个分支 ( feature/basic-tracking) 签出的,而另一个分支 () 是从origin/master.

合并后feature/basic-training,我想feature/tracking-refactor在不将feature/basic-training提交拖到新的origin/master.

下面是我的情况的更图形表示。假设我有一个如下的 git log 图作为起点。

以前的 git 日志

而且,在成功合并feature/basic-tracking到主请求后,我目前处于这种情况。

当前的 git 日志

但是,当我尝试 rebasefeature/tracking-refactor到 master 以获得类似干净的日志历史时,实际上我也在拖拽每个提交feature/basic-tracking。我只想重新设置feature/tracking-refactor提交,例如仅使用 (d0875g 和 ee68b9t) SHA 的提交。

我的工作将是创建一个新分支origin/master并从分支中挑选每个提交feature/tracking-refactor。但我希望有一个更优雅的选择。谢谢!

标签: gitrebase

解决方案


git rebase --onto. 这种方式可能很难:git rebase --onto target-branch discard-branch branch-to-rebase. 因此,discard-branch将告诉 rebase不会在 rebase 操作上执行的修订。在你的情况下(如果我理解正确的话):

git rebase --onto origin/master feature/basic-training feature/tracking-refactor

实际上,如果 feature/basic-training 已经合并到 origin/master,你可以这样做:

git checkout feature/tracking-refactor
git rebase origin/master

或者

git rebase --onto origin/master origin/master feature/tracking-refactor

希望它有效。


推荐阅读