通常我想编辑提交消息,而不必重新选择上次提交的文件集。
git commit file1.c file2.c
提交消息中的意外错误。
git commit file1.c file2.c --amend
这很有用,但我不想重新选择原始提交中的文件集,我曾经不小心做了git commit -a --amend
并无意中添加了许多更改。
我知道git rebase -i HEAD~1
然后用pick
替换r
(重新单词),但最终只需几步。
有没有办法在不包含任何新文件的情况下一步重写最后一次提交?
答案 0 :(得分:7)
只要您在暂存区域没有进行任何更改,您只需使用
git commit --amend
编辑您之前提交的消息 1 。
但是,如果您执行已暂停更改,那么您可以将--only
(或-o
)标记与--amend
结合使用,仅编辑上一次提交的消息,没有提交分阶段的更改:
git commit --amend --only
git commit --amend -o # Shorter
David Ongaro in his answer指出了这个选项。
正如git commit
documentation(强调我的)所述:
-o --only
仅从命令行中指定的路径进行提交,忽略到目前为止已暂存的任何内容。这是 如果给出了任何路径, git commit 的默认操作模式 在命令行上,在这种情况下可以省略此选项。 如果 此选项与 - modify 一起指定,则不需要路径 要指定,可以用来修改最后一次提交而不用 提交已经上演的变更。
1 如Minitech及其他人所述。
答案 1 :(得分:2)
只需使用git commit --amend
而不使用任何其他参数。它将打开编辑器,您可以更改提交消息。
答案 2 :(得分:0)
你可以git commit --amend -m <new commit message>
。当然,预防措施是确保没有其他答案中提到的阶段性变化。