6

通常我想编辑提交消息,而不必从上次提交中重新选择文件集。

git commit file1.c file2.c

提交消息中的意外拼写错误。

git commit file1.c file2.c --amend

这可行,但我不想从原始提交中重新选择文件集,我曾经不小心做了git commit -a --amend并无意中添加了许多更改。

我知道git rebase -i HEAD~1然后pickr(re-word)替换,但这最终只是几个步骤。

有没有办法在不包含任何新文件的情况下一步重新提交最后一次提交?

4

3 回答 3

9

修改消息而不进行分阶段更改

只要您没有在暂存区域中暂存任何更改,您就可以简单地使用

git commit --amend

编辑您之前提交的消息1

即使分阶段更改也可以修改消息

但是,如果您确实有暂存更改,那么您可以结合使用--only(或-o) 标志--amend来仅编辑上一次提交的消息,而不提交暂存更改:

git commit --amend --only
git commit --amend -o # Shorter

David Ongaro 在他的回答中指出了这个选项。

文档

git commit文档中所述(强调我的):

-o
--only  

仅从命令行上指定的路径进行提交,忽略到目前为止已暂存的任何内容。如果在命令行中给出了任何路径,这是git commit的默认操作模式,在这种情况下可以省略此选项。如果此选项与--amend一起指定,则无需指定路径,可用于修改最后一次提交,而无需提交已暂存的更改。

1正如Minitech和其他人所提到的。

于 2014-08-19T04:51:52.257 回答
2

只需使用git commit --amend没有任何其他参数。它将打开编辑器,您可以更改提交消息。

于 2014-08-19T04:30:23.303 回答
0

你可以做到git commit --amend -m <new commit message>。当然,预防措施是确保没有其他答案中提到的分阶段更改。

于 2014-08-19T06:17:33.160 回答