如何查看已暂存(staged)的改动

git diff --cached(等价 --staged)查看暂存区与上次提交的差异;--stat 看摘要。提交前养成检查暂存内容的习惯,附配套命令。

最佳实践
应用程序模块协作插画

一句话回答:git diff --cached(或等价写法 git diff --staged)——显示暂存区与最近一次提交之间的差异,即"如果现在 commit,会提交什么"。看摘要用 git diff --cached --stat。

三个 diff 的分工

git diff                # 工作区 vs 暂存区:改了但还没 add 的部分
git diff --cached       # 暂存区 vs HEAD:已 add、待提交的部分 ⭐
git diff HEAD           # 工作区 vs HEAD:已跟踪文件的最终差异,不含未跟踪文件

提交前过一遍 git diff --cached 是值得养成的习惯——确认没有误加的调试代码、密钥文件、大段注释。

实用变体

git diff --cached --stat          # 只看文件清单和改动行数
git diff --cached --name-only     # 只看文件名
git diff --cached -- src/app.js   # 只看某个文件的暂存改动
git diff --cached -U10            # 上下文从 3 行加宽到 10 行
git diff --cached --color-words   # 词级高亮,看文案改动很舒服

提交前的完整检查流程

git status                 # 1. 哪些文件处于什么状态
git diff --cached          # 2. 待提交内容终审
git commit -m "..."        # 3. 放心提交

发现某个文件不该提交:git restore --staged 文件名 撤出暂存区,不影响工作区改动。

常见问题(FAQ)

Q:git diff --cached 没输出,但 git status 显示有暂存文件?

A:新仓库没有 HEAD 时,git diff --cached 会显示全部已暂存内容,不必先提交。纯重命名可用 git diff --cached --summary 查看。还应检查当前仓库、路径过滤器、外部 diff 设置,以及 git status 显示的究竟是暂存还是未暂存列。

Q:--cached 和 --staged 完全一样吗?

A:完全等价,--staged 是后来加的语义化别名。团队统一一个即可。

Q:GUI 工具里怎么看?

A:VS Code 源代码管理面板点击"Staged Changes"区的文件直接显示暂存 diff;其他 GUI 的界面和暂存模型可能不同,不应假定 GitHub Desktop 也有同样的 Staged 分区。命令行习惯配 GUI 检查最稳。

核查依据

本文依据官方文档核对,示例未在实际业务环境运行;上线前请按部署版本、权限与数据范围验证。


延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台