git diff
是 Git 中非常常用的命令,用于比较不同版本的文件改动。可以比较工作区、暂存区、或者提交之间的差异。下面是对 git diff
常用场景的详细解释:
1. git diff
当你执行 git diff
时,它会显示工作区与暂存区之间的差异,也就是你在工作区中修改了但还没有添加到暂存区(使用 git add
)的内容。例如:
git diff
说明:
- 左侧:显示的是修改前的代码(减号
-
表示删除的行)。 - 右侧:显示的是修改后的代码(加号
+
表示新增的行)。
2. git diff --cached
或 git diff --staged
这个命令用于显示暂存区与最后一次提交之间的差异。也就是说,已经 git add
了的改动,但还没有 git commit
。例如:
git diff --cached
说明:
- 它显示的是已经准备好提交的改动,区别于
git diff
只显示工作区中的修改。
3. git diff [branch1] [branch2]
可以比较两个分支之间的差异,显示从 branch1
到 branch2
的不同。例如:
git diff main feature-branch
说明:
- 该命令会展示从
main
分支到feature-branch
的改动内容。
4. git diff [commit1] [commit2]
用于比较两个提交之间的差异,commit1
和 commit2
可以是提交的哈希值或分支名称。例如:
git diff 1a2b3c 4d5e6f
说明:
- 这个命令会列出从
commit1
到commit2
所做的改动。
5. git diff --name-only
这个命令会只显示发生变化的文件名,而不会显示具体的内容。例如:
git diff --name-only
说明:
- 该命令适合快速查看有哪些文件发生了改动,而不需要查看改动的具体细节。
6. git diff --stat
显示文件的差异摘要,包括哪些文件改变了,以及每个文件的插入和删除的行数。例如:
git diff --stat
说明:
- 适用于想快速了解改动的概况,特别是文件数目和具体改动的规模。
7. git diff [file]
只比较某个特定文件的改动。例如:
git diff index.html
说明:
- 只显示
index.html
文件的改动,适用于需要查看单个文件的差异。
8. git diff [commit] [file]
用于查看某个文件在特定提交之前或之后的改动。例如:
git diff 1a2b3c index.html
说明:
- 显示从
commit
到当前状态index.html
文件的差异。
9. git diff --word-diff
将差异以词为单位显示,而不是以行为单位。例如:
git diff --word-diff
说明:
- 这个命令更适合代码较少但内容修改较细微的情况。
10. git diff HEAD
显示当前工作目录和最近一次提交的差异,即工作区和 HEAD 提交之间的改动。例如:
git diff HEAD
说明:
- 它显示工作区中尚未提交的所有修改。