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 修改/改写(不添加/更改文件)的主要内容,如果未能解决你的问题,请参考以下文章