我有一组如下所示的分支:
* 444ddd - somefeature3
/
* 333ccc - somefeature2
/
* 222bbb - somefeature1
/
------* 111aaa - master
如果我在单个分支上(假设 somefeature3
没有 somefeature2
或 somefeature1
现有),我可以通过执行 git rebase -i 111aaa
来更新我的所有提交。换句话说,我可以这样:
* 444ddd - somefeature3
/
* 333ccc
/
* 222bbb
/
------* 111aaa - master
...对此:
* 444eee - somefeature3
/
* 333ddd
/
* 222ccc
/
------* 111aaa - master
特别是,提交 222bbb
被替换为222ccc
, 333ccc
被替换为333ddd
,和444ddd
被替换为444eee
.
但是,如果我关心分支指针 somefeature2
和somefeature1
,在这种情况下它们不会得到更新。我会从这里开始:
* 444ddd - somefeature3
/
* 333ccc - somefeature2
/
* 222bbb - somefeature1
/
------* 111aaa - master
...对此:
* 444eee - somefeature3
/
* 333ddd * 333ccc - somefeature2
/ /
* 222ccc * 222bbb - somefeature1
/ /
------* --------------*
111aaa - master
我想要发生的是最终状态看起来像这样,分支指针 somefeature2
和somefeature1
与 somefeature3
一起更新:
* 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/