Menu
CoddyTech

Git Diff

最后更新

git diff 逐行显示仓库两种状态之间的确切改动。不带参数时,它显示你已经修改但还没有暂存的内容。加上 --staged 查看已暂存的内容,指定两个提交或分支来比较它们,或者指定一个文件来缩小范围。

在终端在线编辑器中试试这些命令:浏览器里就有一个真正的 shell,无需安装任何东西。

git diff 显示两个状态之间具体改动了哪些行:删除的行和新增的行。

语法

命令作用
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 课程也会一步步讲解如何查看更改。
Coddy 编程语言插图

在 Coddy 学习 Git

开始