我想使用交互式 rebase 来编辑以前的提交,但是当我进入该提交的编辑模式时,所有文件都已提交。
我知道我可以进行更改和修改提交,但我希望所有更改最初都未提交(暂存或其他方式),这样我就可以编辑它,就好像它是最初提交之前的片刻一样。这可能吗?
最佳答案
想象 git rebase --interactive
给你这个列表:
pick 3d15626 first
pick 7911b8b second
pick 60d94b4 third
现在您想要编辑处于未提交状态的第二个提交。为此,像这样更改它的行:
pick 3d15626 first
exec git cherry-pick --no-commit 7911b8b && false
pick 60d94b4 third
这一行的作用:
- 不是通常选择提交
git cherry-pick
而是执行 git cherry-pick
会将“第二个”提交(注意使用相同的提交哈希)应用于索引和工作树,预加载提交消息但不提交(--不提交
)&& false
通过返回失败的退出代码确保执行的命令“失败”。这会强制git rebase
在此行之后中断,让您“修复”问题,即您现在可以编辑提交- 完成编辑后,您可以再次
git commit
。由于git cherry-pick
,编辑器将自动包含原始提交消息
- 提交提交并且索引再次干净后,您可以继续
git rebase --continue
关于git - 如何将带有交互式 rebase 的提交编辑为未提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44513186/