行者孙Python

单机篇-Day10|补丁急救:git commit --amend 修改最近提交

📖 知识点

1. git commit --amend 是什么?

--amend 可以修改最近一次提交:

  • 改提交说明

  • 把漏掉的文件补进去

  • 修正提交的内容

💡 生活比喻像 "寄信后追悔"—— 信还没寄出(提交还没推送到远程),你可以拆开信封,改改内容再封好,让这封信看起来一直是那副样子。

2. 修改最近一次提交的说明

提交后发现说明写错了:

git commit --amend -m "新的正确说明"

 

用 -m 重新指定说明,覆盖上一次提交的说明。

3. 把漏掉的文件补进上一次提交

忘了 add 某个文件就提交了:

git add 漏掉的文件.py        # 1. 先暂存漏掉的文件
git commit --amend -m "完整说明"   # 2. 补进上一次提交

 

先 git add 补充,再 --amend 把新内容并进上一次提交。

4. 验证修改结果

git log --oneline

 

提交 ID 会变(因为是 "重新生成" 了上一次提交),但说明和内容已修正。

⚠️ 易错提醒

  1. --amend 只修改最近一次提交,改更早的要用进阶的 rebase

  2. --amend 会改变提交 ID,如果已经 push 到远程,别乱 amend(会影响协作,Day20 + 会讲)

  3. 补文件要先 git add,再 --amend

⚔️ 剧情 Kata 实战任务

任务需求:

  1. 修改 "外卖 App.py",提交,但故意把说明写错(如漏字)

  2. 发现说明错了,用 --amend -m 改正说明

  3. 再模拟 "漏了文件":新建一个文件,直接 commit(没 add?演示补丁)

  4. 用 --amend 把漏掉的文件补进上一次提交

  5. 用 git log --oneline 验证提交干净、内容完整

参考代码(在终端依次敲)

# 0. 进仓库
cd ~/外卖App

# 1. 改代码并提交(故意写错说明)
echo "def 评价(): return '五星'" >> 外卖App.py
git add 外卖App.py
git commit -m "feat: 增加评价能"   # 写错了:漏了"功能"

# 2. 发现说明错了,用--amend改正
git commit --amend -m "feat: 增加评价功能"

# 3. 模拟漏文件:新建"支付.py"但没add,先提交别的
touch 支付.py

# 4. 把漏掉的文件补进上一次提交
git add 支付.py
git commit --amend -m "feat: 增加评价功能,新增支付模块"

# 5. 验证
git log --oneline

 

运行示例:

user@linux:~/外卖App$ git commit -m "feat: 增加评价能"
[master f3a4b5c] feat: 增加评价能

user@linux:~/外卖App$ git commit --amend -m "feat: 增加评价功能"
[master 6c7d8e9] feat: 增加评价功能

user@linux:~/外卖App$ touch 支付.py
user@linux:~/外卖App$ git add 支付.py
user@linux:~/外卖App$ git commit --amend -m "feat: 增加评价功能,新增支付模块"
[master 9f0a1b2] feat: 增加评价功能,新增支付模块

user@linux:~/外卖App$ git log --oneline
9f0a1b2 feat: 增加评价功能,新增支付模块
...

 

💡 完成动作示意:

  1. 提交时说明写错 "增加评价能"(漏字)

  2. --amend -m 改成 "增加评价功能",说明修正

  3. 漏了 "支付.py",git add 后 --amend 补进提交

  4. 最终 git log 里那条提交说明完整、内容齐全 —— 补丁急救成功!

🧠 思考题

  1. git commit --amend -m "新说明" 能做什么?它修改的是哪一次提交?

  2. 为什么说 "如果提交已经 push 到远程,别乱 amend"?(提示:--amend 会改变提交 ID,Day20 推送到远程后会影响别人)

‹ 返回目录
🏠首页 Python 📦资源 👤关于我