git - 如何向后 rebase ,最好不使用 diff/apply?

标签 git rebase

我有以下提交历史:

(master)              (topic)   (quickfix)
       a -> b -> c ->       d ->         e

我想修改它,让它看起来像这样:

     (master, quickfix)              (topic)   
a ->                  e -> b -> c ->       d

换句话说,master 处于提交 a。我开始在 topic 分支上工作,但在那个分支上我发现了一个问题并修复了不相关的代码。我在 quickfix 分支中执行此操作,但该分支来自 topic 而不是 master。我想将 quickfix merge 回 master,但是没有topic 中所做的任何更改.

我知道我可以使用 diff/apply 最终到达我想去的地方,但这在我身上发生过几次,我发现 diff/apply 工作流程有点麻烦。 git 中是否有使这更容易的功能?

最佳答案

没有一个命令可以做到这一点,但是一个相对简单的序列可以做到这一点,在 master 分支上运行:

# make it so that it's as if quickfix were branched off of master instead
# of topic
git rebase --onto master topic quickfix

# proceed as normal
git merge quickfix
git rebase master topic

起初我不明白这一点的原因是我不知道 git rebase--onto 选项。我在阅读 git help rebase 时发现了它,其中有一个足够相似的示例。

关于git - 如何向后 rebase ,最好不使用 diff/apply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694597/

相关文章:

git - AWS CodeDeploy : Using multiple git repositories, 或 git 存储库中的子模块?

git - 是否可以在不更改提交哈希的情况下压缩提交?

Mercurial - 在新代码提示之上重新设置旧代码分支,忽略分支与旧代码的 merge

windows - 如何在 Windows 上使用 git+mintty+mingw 获得彩色输出?

r - Rstudio 是否将 '.Rproj.user' 和 '.Ruserdata' 放入 '.gitignore' 中?

git - 无法重写分支 : You have unstaged changes

svn - 为什么 Git 比 Subversion 好?

GIT 更改基本/根文件夹

git - 真正压平一个 git merge

git - 防止 Master Branch 领先于 dev