跳到主要内容

修改上次提交信息

基于 main 叉出一个新分支 amend,之后创建一个新文件 README.md 直接提交并推送到远程:

# 新分支
$ git checkout -b amend

# 创建文件
$ touch README.md

# 直接提交 & 推送
$ git add README.md
$ git commit -m "Create README"
$ git push origin amend

看下日志信息:

commit a6a1890e8a93ee30e915c5edd5a97bfe40cf744b (HEAD -> amend, origin/amend)
Author: magicianlib <magicianlib@gmail.com>
Date: Tue Dec 30 11:17:04 2025 +0800

Create README

commit 794d76af444cbadd7b5e553a4d3aadf2512bafd6 (origin/main, origin/HEAD, main)
Author: magicianlib <magicianlib@gmail.com>
Date: Thu Dec 25 18:08:55 2025 +0800

init

顺便看下最新的提交涉及的文件信息:

$ git show HEAD --name-status

commit a6a1890e8a93ee30e915c5edd5a97bfe40cf744b (HEAD -> amend, origin/amend)
Author: magicianlib <magicianlib@gmail.com>
Date: Tue Dec 30 11:17:04 2025 +0800

Create README

A README.md

现在我突然觉得我的 message 信息不够友好或者想在 README.md 中添加一些新内容该怎么做?

简单,git 里面有后悔药,只需要使用如下命令即可:

git commit --amend
只需要修改 commit message?

如果只需要修改 commit message 直接执行该命令即可,git 会自动打开编辑器,然后在编辑窗口重新写一下 message 并保存即可。

但是如果需要添加一些新变更,就需要使用下面的操作。比如在 README.md 中添加新内容:

$ echo "hello world" >> README.md
$ git status
On branch amend
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md

no changes added to commit (use "git add" and/or "git commit -a")

现在需要做的是将该变更添加到工作空间,并执行 --amend 命令:

$ git add README.md
$ git commit --amend

然后会自动进入到一个编辑窗口,显示的内容是最近一次提交信息,示例如下:

Create README

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Tue Dec 30 11:17:04 2025 +0800
#
# On branch amend
# Changes to be committed:
# new file: README.md
#

你只需要直接保存即可。如果觉得 commit message 不够友好也可以重写一下:

Create README And Add "hello wolrd" # 重写的 commit message

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Tue Dec 30 11:17:04 2025 +0800
#
# On branch amend
# Changes to be committed:
# new file: README.md
#

保存之后会看到如下输出:

$ git commit --amend
[amend 278a209] Create README And Add "hello wolrd"
Date: Tue Dec 30 11:17:04 2025 +0800
1 file changed, 1 insertion(+)
create mode 100644 README.md

重新看下 log 信息:

commit 278a20989c858ddd9b11bafb654f76281de8c419 (HEAD -> amend)
Author: magicianlib <magicianlib@gmail.com>
Date: Tue Dec 30 11:17:04 2025 +0800

Create README And Add "hello wolrd" # 提价信息已变更

commit 794d76af444cbadd7b5e553a4d3aadf2512bafd6 (origin/main, origin/HEAD, main)
Author: magicianlib <magicianlib@gmail.com>
Date: Thu Dec 25 18:08:55 2025 +0800

init

继续看下统计信息:

$ git show HEAD --stat

commit 278a20989c858ddd9b11bafb654f76281de8c419 (HEAD -> amend)
Author: magicianlib <magicianlib@gmail.com>
Date: Tue Dec 30 11:17:04 2025 +0800

Create README And Add "hello wolrd"

README.md | 1 + # 可以看到 README.md 涉及到新变更
1 file changed, 1 insertion(+)

修改还差最后一步,强制推送到远程就大功告成了:

# 强制推送到远程推荐命令
$ git push origin amend --force-with-lease

# 慎重使用下面这种强制推送命令
$ git push origin amend --force