git status显示的“modified”指工作区已改但未git add的文件,属“未暂存”;真正“待提交”的是已git add、出现在“Changes to be committed”中的绿色文件。

用 git status 就能直接看到待提交的代码,但默认只显示文件名和状态;要看到具体改了哪几行,得配合 git diff。
为什么 git status 显示的“modified”不等于“待提交”
Git 里有工作区 → 暂存区 → 本地仓库三层结构。git status 输出的 “modified” 文件,只是工作区被改过、还没 git add 进暂存区的文件——它还不是“待提交”,只是“待暂存”。真正“待提交”的,是已经 git add 过、出现在 git status 的 “Changes to be committed” 区块里的文件。
- 没
git add的修改:git status显示红色,属于“未暂存” - 已
git add但没git commit的修改:git status显示绿色,属于“待提交” - 如果改完又
git add了,但之后又继续改了同一文件,git status会同时显示绿色(已暂存版本)和红色(新改部分),容易误判
git diff 默认只看“未暂存”的改动
执行 git diff 不带参数时,它对比的是工作区 vs 暂存区,所以只显示还没 git add 的那部分差异。这恰恰是新手最容易困惑的地方:明明刚改完代码,git diff 却没输出,以为没改成功——其实是已经 git add 过了,得换命令看。
当用户提及 GitHub URL,或要求分析、审查、探索或理解任意 GitHub 项目、仓库或代码库时,请使用此技能。触发条件包括以下短语:“分析这个项目”、“看看这个仓库”、“analyze this repo”、“what does this project do”,或消息中包含任何 github.com URL。
- 看未暂存的改动:
git diff - 看已暂存、待提交的改动:
git diff --cached(或git diff --staged) - 看工作区 + 暂存区全部改动(即所有未 commit 的内容):
git diff HEAD
快速确认“这次到底要提交什么”
提交前最稳妥的做法,是把三者串起来看,避免漏文件、误提交:
- 先跑
git status -s:用简写模式快速扫一遍文件状态,M表示已暂存,MM表示已暂存+又改了,??表示未跟踪新文件 - 再跑
git diff --cached:重点核对已暂存的内容是否就是你想提交的逻辑 - 最后加个
git diff:检查有没有意外多改、忘了git add的部分 - 如果项目大、文件多,
git diff --cached -p --no-color | head -20可以只看前 20 行改动,避免刷屏
很多人卡在“不知道自己改了啥就糊里糊涂提交”,其实不是记不住命令,而是没分清 Git 三个区域的边界。只要每次提交前花 10 秒跑一遍 git status -s 和 git diff --cached,就能避开 90% 的误提交问题。










