git - Git rebase并自动更新分支指针?
问题描述
我有一组如下分支:
* 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
特别是,commit222bbb
被替换为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
产生这个最终状态?
(元:这类似于这个问题,但它进一步询问是否可以让 Git 自动执行适当的 foo)
解决方案
我最容易做到的是使用交互式 rebase 并在exec git branch -f branchname
选择这些提示之后添加。如果这对您来说很常见,那么您就处于脚本领域,请使用您最喜欢的编辑器git for-each-ref --points-at
在每一行上运行,并使用一种可以输出更新的格式。
推荐阅读
- c++ - MDIchild 中的 QWidget 问题 - QAbstractScrollArea
- vue.js - 如何在Vuejs中处理浏览器后退按钮单击事件
- sql - Postgres 不使用带有 LEFT JOIN 或 OR in where 的索引
- php - 从 debug_backtrace 动态提取参数
- haproxy - HAProxy 削减日志中的参数
- c++ - C++。SevenZip 压缩为 zip 格式。ClassFactory 无法提供请求的类
- node.js - 为什么在heroku中找不到googleapis节点模块?
- go - 如何在 go 模型中包装 proto 消息
- ckeditor - 将粘贴的剪贴板图像从 CKeditor 传递到 Dropzone
- angular - Firebase webhook 成功时返回错误