(TLDR)
在git rebase -i
中是否有一种方式可以停止编辑,而无需提交ID?
(/TLDR)
较长版:
背景
使用git rebase -i
时,我会得到一个文本编辑器,在其中可以定义一系列命令,每行以pick COMMIT_ID
开头。
其中之一的选项是将“pick COMMIT_ID”替换为“edit COMMIT_ID”,这意味着它将在提交后停止,以便我可以修改提交或进行一些手动操作。然后我可以继续使用git rebase --continue
。
从选项列表中:
# e, edit = use commit, but stop for amending
问题
我想知道是否有一种选项可以停止编辑,而不选择任何提交。
动机 / 用例
例如,如果我想压缩一系列提交,并在一些手动操作之后停止,我必须在同一个提交ID前面放置edit + squash - 这是不允许的。
相反,我会像这样做:
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在以下行中丢失或不是提交。有趣的是,效果差不多就是我想要的,它会停止,然后我可以进行操作。但我确定这不是预期的方法。
git reset --soft @^; git commit --amend
自行进行 squash。 - jthill