修改上次提交信息
基于 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