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

Posted

技术标签:

【中文标题】Git 修改/改写(不添加/更改文件)【英文标题】:Git amend/reword (without adding/changing files) 【发布时间】:2014-10-12 02:19:31 【问题描述】:

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

git commit file1.c file2.c

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

git commit file1.c file2.c --amend

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

我知道git rebase -i HEAD~1,然后将pick 替换为r(重述),但这最终需要几个步骤。

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

【问题讨论】:

我认为这个问题不是Edit an incorrect commit message in Git 的完全重复,因为这个问题特别要求在修改期间不添加任何新的更改。重新开放给任何想要回答的人。 只要没有分阶段的内容,就运行git commit --amend 【参考方案1】:

不分阶段修改消息

只要你的暂存区没有暂存任何更改,你就可以简单地使用

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 的默认操作模式(如果给出了任何路径) 在命令行上,在这种情况下可以省略此选项。 如果 此选项与 --amend 一起指定,则不需要路径 要指定,可用于修改最后一次提交,无需 提交已暂存的更改。

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

【讨论】:

【参考方案2】:

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

【讨论】:

您必须小心,以免意外提交分阶段内容,仅供参考。因此,请确保在使用之前检查git status【参考方案3】:

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

【讨论】:

以上是关于Git 修改/改写(不添加/更改文件)的主要内容,如果未能解决你的问题,请参考以下文章

git 仅添加修改过的更改并忽略未跟踪的文件

基于更改类型的 git add/rm 文件(文件的)

git入门: 更改内容 版本倒退

git 修改 .gitignore 不生效

如何在 Git 上添加未跟踪的文件?

Git新手教程-撤销更改(七)