Git修改/改写(不添加/更改文件)

时间:2014-08-19 04:27:59

标签: git git-commit git-rewrite-history amend

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

git commit file1.c file2.c

提交消息中的意外错误。

git commit file1.c file2.c --amend

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

我知道git rebase -i HEAD~1然后用pick替换r(重新单词),但最终只需几步。

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

3 个答案:

答案 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>。当然,预防措施是确保没有其他答案中提到的阶段性变化。