Git rebase 并自动更新分支指针?

标签 git branch rebase feature-branch

我有一组如下所示的分支:

            * 444ddd - somefeature3
           /
          * 333ccc - somefeature2
         /
        * 222bbb - somefeature1
       /
------* 111aaa - master

如果我在单个分支上(假设 somefeature3 没有 somefeature2somefeature1 现有),我可以通过执行 git rebase -i 111aaa 来更新我的所有提交。换句话说,我可以这样:

            * 444ddd - somefeature3
           /
          * 333ccc
         /
        * 222bbb
       /
------* 111aaa - master

...对此:

            * 444eee - somefeature3
           /
          * 333ddd
         /
        * 222ccc
       /
------* 111aaa - master

特别是,提交 222bbb被替换为222ccc , 333ccc被替换为333ddd ,和444ddd被替换为444eee .

但是,如果我关心分支指针 somefeature2somefeature1 ,在这种情况下它们不会得到更新。我会从这里开始:

            * 444ddd - somefeature3
           /
          * 333ccc - somefeature2
         /
        * 222bbb - somefeature1
       /
------* 111aaa - master

...对此:

            * 444eee - somefeature3
           /
          * 333ddd        * 333ccc - somefeature2
         /               /
        * 222ccc        * 222bbb - somefeature1
       /               /
------* --------------*
       111aaa - master

我想要发生的是最终状态看起来像这样,分支指针 somefeature2somefeature1somefeature3 一起更新:

            * 444eee - somefeature3
           /
          * 333ddd - somefeature2
         /
        * 222ccc - somefeature1
       /
------* 111aaa - master

有没有办法让 Git 自动更新 somefeature1 的分支指针和somefeature2以及 git rebase -i 的一部分,产生这个最终状态?

(元:这与 this question 类似,但它更进一步,询问是否可以让 Git 自动执行适当的 foo)

最佳答案

我能做到的最简单的方法是使用交互式 rebase 并在这些提示的选择之后添加exec gitbranch -fbranchname。如果这对您来说是一件很平常的事情,那么您就处于脚本编写领域,请使用您最喜欢的编辑器在每一行上运行 git for-each-ref --points-at ,并使用一种格式更新。

关于Git rebase 并自动更新分支指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61672036/

相关文章:

linux - 验证多个目录存在于其适当的分支上

linux - 计算条件跳转

GIT - 更改早期提交中的代码,以便它反射(reflect)在之后的提交中

git - Git如何选择重新设定基准的起点?

Git:压缩分支之间共享的 Material

ruby-on-rails - 可以将 Gemfile 和 Gemfile.lock 添加到 git

svn - 将 svn 仓库迁移到 git。 svn repo 中的多个应用程序需要分成单独的 git repos

mercurial - TortoiseHg 图表颜色的含义

git - 删除 jgit 未按预期工作的分支

git - 从 TFS 迁移 -> GIT...如何保留分支的历史记录