📖 知识点
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 会变(因为是 "重新生成" 了上一次提交),但说明和内容已修正。
⚠️ 易错提醒
--amend只修改最近一次提交,改更早的要用进阶的 rebase
--amend会改变提交 ID,如果已经 push 到远程,别乱 amend(会影响协作,Day20 + 会讲)补文件要先 git add,再
--amend
⚔️ 剧情 Kata 实战任务
任务需求:
修改 "外卖 App.py",提交,但故意把说明写错(如漏字)
发现说明错了,用
--amend -m改正说明再模拟 "漏了文件":新建一个文件,直接 commit(没 add?演示补丁)
用
--amend把漏掉的文件补进上一次提交用
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: 增加评价功能,新增支付模块
...
💡 完成动作示意:
提交时说明写错 "增加评价能"(漏字)
--amend -m改成 "增加评价功能",说明修正漏了 "支付.py",
git add后--amend补进提交最终
git log里那条提交说明完整、内容齐全 —— 补丁急救成功!
🧠 思考题
git commit --amend -m "新说明"能做什么?它修改的是哪一次提交?为什么说 "如果提交已经 push 到远程,别乱 amend"?(提示:--amend 会改变提交 ID,Day20 推送到远程后会影响别人)
行者孙Python