【发布时间】:2018-11-14 11:48:04
【问题描述】:
(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 前面 - 这是不允许的。
相反,我会这样做:
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 rebase git-interactive-rebase