Git Diff
最后更新
git diff 逐行显示仓库两种状态之间的确切改动。不带参数时,它显示你已经修改但还没有暂存的内容。加上 --staged 查看已暂存的内容,指定两个提交或分支来比较它们,或者指定一个文件来缩小范围。
在终端在线编辑器中试试这些命令:浏览器里就有一个真正的 shell,无需安装任何东西。
语法
| 命令 | 作用 |
|---|---|
git diff | 未暂存的更改与索引对比 |
git diff --staged | 已暂存的更改与上一次提交对比 |
git diff HEAD | 自上一次提交以来的所有更改 |
git diff main feature | 两个分支之间的差异 |
git diff <hash1> <hash2> | 两个提交之间的差异 |
git diff -- file.txt | 单个文件的更改 |
常见用法
| 目标 | 命令 |
|---|---|
| 查看即将提交的内容 | git diff --staged |
| 查看未提交的工作 | git diff |
| 把你的分支和 main 比较 | git diff main |
| 只看有改动的文件名 | git diff --name-only |
Git diff 常见问题
git diff 默认显示什么?
不带参数时,
git diff 显示工作区中尚未暂存的更改,也就是你在上一次 git add 之后编辑的内容。要查看已经暂存(下一次会提交)的内容,使用 git diff --staged;要查看自上一次提交以来的所有内容,使用 git diff HEAD。git diff 和 git diff --staged 有什么区别?
git diff 把工作区和暂存区进行比较(未暂存的更改)。git diff --staged(也可以写成 --cached)把暂存区和上一次提交进行比较(已暂存的更改)。两者合起来,就是你所有未提交工作的两个部分。如何比较两个分支或两个提交?
直接写出它们:
git diff main feature 显示两个分支之间的差异,git diff <hash1> <hash2> 比较两个提交。在末尾加上 -- <file>,可以只比较一个文件。如何只看哪些文件有改动,而不看完整的差异?
用
git diff --name-only 只显示文件名,或者用 git diff --stat 显示摘要,列出每个文件以及改动了多少行。在阅读完整的逐行差异之前,用它们快速了解全貌很方便。可以在线练习吗?
可以。打开终端在线编辑器,就能在浏览器里真正的 shell 中运行
git diff,无需安装任何东西。Coddy 免费的互动式 Git 课程也会一步步讲解如何查看更改。