(长话短说)
有办法进去吗git rebase -i
停止编辑,没有提交 ID?
(/TLDR)
更长的版本:
背景
With git rebase -i
,我得到一个文本编辑器,我可以在其中定义命令列表,从pick COMMIT_ID
在每一行上。
其中一个选项是将“pick COMMIT_ID”替换为“edit COMMIT_ID”,这意味着它将在提交后停止,以便我修改提交,或者进行一些手动操作。然后我可以继续git rebase --continue
.
从选项列表中:
# e, edit = use commit, but stop for amending
Question
我想知道是否有一个选项可以停止编辑,而不选择任何提交。
动机/用例
例如。如果我想压缩一系列提交,然后停止进行一些手动操作,我必须将编辑 + 压缩放在同一个提交 id 前面 - 这是不允许的。
相反,我会做这样的事情:
pick COMMIT_0 Change some colors
pick COMMIT_1 Make it faster
squash COMMIT_2 Fix a typo in previous commit
squash COMMIT_3 Fix another typo in previous commit
edit
pick COMMIT_4 Refactor some things
pick COMMIT_5 Introduce new options
这样的选项还允许在序列中的第一次提交之前停止。
(我想说它将允许在整个历史记录的初始提交之前进行编辑,但这不是真的 - 初始提交永远不是变基序列的一部分)
如果我这样做,git 会这样说:
警告:SHA-1 丢失或者不是以下行中的提交:
有趣的是,效果或多或少是我想要的,它停止了,我可以做事了。但我确信这不是预期的方法。
根据具体情况,您有一种、两种或三种选择。
第一个选项
Insert
exec false
或其缩写形式
x false
在你想停止的地方。你可能知道,exec
在命令发生处运行 shell 命令;但如果命令失败退出,git rebase
停止,并且命令false
总是失败退出。
第二个选择
如果您使用的是 Git 2.20 或更高版本,您可以插入
break
或其缩写形式
b
在你想停止的地方。该命令的引入正是为了您所要求的目的。
第三种选择
在您想要停止的点之前标记提交edit
代替pick
。显然,如果您想在第一次提交之前或之后停止,这不起作用squash
or fixup
commit.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)