是否可以使用 Git 来对分支及其所有父分支进行变基? (我认为“父分支”是在这里使用的正确形式。根据您的观点,您也可以将它们称为依赖子分支。但是,遵循提交的父指针将让您到达这些分支,所以恕我直言称它们为“父分支”是公平的)。
我经常使用分支作为快速/可变标签/检查点来标记某些提交。
所有父分支/父引用都完全包含在要重新设置基础的分支中;仅在父分支中没有提交。
* master
*
* featureA-finished
*
* origin/master
现在我想要rebase -i
master
onto origin/master
更改/重写提交featureA-finished^
After git rebase -i --onto origin/master origin/master master
,我基本上希望历史是:
* master
*
* featureA-finished
* (changed/reworded)
* origin/master
但我得到的是:
* master
*
* (same changeset as featureA-finished)
* (changed/reworded)
| * featureA-finished
|.* (original commit i wanted to edit)
* origin/master
有没有办法解决这个问题,或者我是否坚持在新的、重新基础的提交上重新创建所有父分支(更具体地说是分支标签)?
这个问题与以下问题相关,但仍然有很大不同:重新确定分支的基础,包括其所有子分支 https://stackoverflow.com/questions/5600659/rebasing-a-branch-including-all-its-children.
看起来这个功能正在慢慢进入 Git。rebase
将获得选择权--rebase-refs
这将完全按照我原来的答案所要求的那样进行。对于建议的补丁系列,请参阅线程rebase:命令“ref”和选项 --rewrite-{refs,heads,tags} http://thread.gmane.org/gmane.comp.version-control.git/176339在gmane上。
2022 年更新:
选项--update-refs https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---update-refs终于登陆了 Git v2.38.0,它现在可以完全执行 12 多年前最初问题中所提出的问题:)
此功能已与提交合并3d8e3dc4fc22fe41f8ee1184f085c600f35ec76f https://github.com/git/git/commit/3d8e3dc4fc22fe41f8ee1184f085c600f35ec76f在八月。万岁!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)