差异对比Diff
Git 专区逐行标出代码改动前后有哪些不同
diff 通常用绿色加号表示新增、红色减号表示删除。提交前要分别检查未暂存和已暂存的差异,确认没有误删、调试代码或敏感信息。
改动前- <button>点我</button> </section>
改动后+ <button class="btn">立即开始</button> </section>
$ git diff
逐行对账:红色 - 是删掉的,绿色 + 是新增的。commit 前先 diff 一眼,确认改的就是你想改的;大片红色删除行要警惕,可能是老功能被顺手删了。
什么时候用
- git diff:看还没 add 的改动,提交前最后一眼$ git diff- <button>点我</button>+ <button class="btn btn-primary">立即开始</button>红减绿加,还没 add 的改动都在这
- git diff HEAD~1 HEAD:比较最近两个提交,复盘上一版动了什么$ git diff HEAD~1 HEAD 2 files changed, 18 insertions(+), 4 deletions(-)明确比较最近两个提交
- 在合并请求的 Files changed 页面集中检查改动📄 index.html+18 −4- 点我+ 立即开始
- AI 大改之后先 diff 再 commit:看懂了再存档AI 改完→git diff 逐行看→commit 存档
什么时候不用
- AI 改完 47 个文件直接 commit:出问题改了哪几行说不清$ git add . && git commit -m "AI 改的"47 files changed 直接提交出问题了?改了哪几行根本说不清
- diff 里躺着 console.log 和调试代码,一起提交进存档+ console.log("test 123")+ // debugger;调试垃圾跟着进了存档diff 时顺手删掉再 commit
- 只看文件名列表不看行:AI 顺手改的文件悄悄混进去3 files changed —— 哦,知道了只看文件名不看行,AI 顺手改的文件混进去
- 看见大片红色删除行也不管:老功能被 AI 顺手删了- <nav>…整个导航栏…</nav>- <footer>…</footer>+ <nav>新导航</nav>大片红:AI 把页脚也删了,你没看见?
组成结构 · Anatomy
📄 index.html
@@ -12,5 +12,5 @@
- <button>点我</button>
+ <button class="btn btn-primary">立即开始</button>
1文件头File Header这段改动属于哪个文件,一个文件一段
2位置标记Hunk @@@@ -12,5 +12,5 @@:改动在第 12 行附近
3删除行- Removed红色带 - 号:旧版本有、新版本删掉的行
4新增行+ Added绿色带 + 号:新版本多出来的行
常见变体 · Variants
看未暂存改动git diff
git diff
查看工作区相对暂存区改了什么
看已暂存改动git diff --staged
git diff --staged
add 之后、commit 之前复核
比较最近两次提交git diff commits
git diff HEAD~1 HEAD
复盘最近一次提交到底改了什么
两个分支比git diff main..feat
git diff main..feat/dark-mode
合并前先看分支领先了多少
典型使用场景
终端 git diff
$ git diff
diff --git a/index.html b/index.html
@@ -12,5 +12,5 @@
- <button>点我</button>
+ <button class="btn btn-primary">立即开始</button>
红色带 - 是删的,绿色带 + 是加的
比较最近两个提交
$ git diff HEAD~1 HEAD --stat
index.html | 10 ++++++----
style.css | 12 ++++++++++++
2 files changed, 18 insertions(+), 4 deletions(-)
$ git diff HEAD~1 HEAD
再看逐行明细,复盘 AI 这一轮干了啥
GitHub Files changed 页
AI 大改后先 diff 再 commit
🤖 AI 大改一轮
→
🔍 git diff 逐行看
→
✅ git commit 存档