git diff命令进行差异比较
git 仓库工作区与版本库
使用git init初始化仓库时会在当前工作目录下生成.git目录,该目录属于 git 的版本库,存储项目的完整历史快照。它包含暂存区(索引区,使用git add添加)和本地对象库(git commit添加),而我们进行编码的当前工作目录属于工作区
1 | graph TD |
git diff 的四种情况
工作区和暂存区
git diff:查看工作区和暂存区所有文件的差异git diff -- {filename}:只查看工作区和暂存区文件{filename}的差异(注意–和{filename}间的空格)git diff -- {filename1} {filename2}:查看工作区和暂存区文件{filename1}、{filename2}的差异(注意空格)
工作区和版本库
git diff HEAD: 查看工作区与最新版本库之间所有的文件差异(将 HEAD 替换为某个版本的 commit ID 即可查看工作区与该版本库之间所有的文件差异,下同)git diff HEAD -- {filename}: 查看工作区与最新版本库之间指定文件名{filename}的文件差异git diff HEAD -- {filename1} {filename2}:查看工作区与最新版本库之间指定文件名{filename1}和{filename2}的多个文件差异
暂存区和版本库
git diff --cached:查看暂存区和最新版本所有文件的差异git diff --cached commit-ID:查看暂存区和对应 commit-ID 版本所有文件的差异git diff --cached -- {filename}:只查看暂存区和最新版本{filename}的差异(注意空格)git diff --cached -- {filename1} {filename2}:查看暂存区和最新版本文件{filename1}、{filename2}的差异(注意空格)git diff --cached commit-ID -- {filename1} {filename2}:查看暂存区和对应 commit-ID 版本文件{filename1}、{filename2}的差异(注意空格)
不同版本之间
git diff commit-ID1 commit-ID2: 查看 commit-ID1 和 commit-ID2 两个版本之间的差异git diff commit-ID1 commit-ID2 -- {filename1} {filename2}: 查看 commit-ID1 和 commit-ID2 两个版本之间的指定文件之间的差异git diff commit-ID1 commit-ID2 --stat: 查看两个版本之间改动的文件列表git diff commit-ID1 commit-ID2 {dir}: 查看两个版本之间指定文件夹{dir}的差异
git diff 输出说明
运行git diff后针对每个有所变动的文件会输出类似如下的信息:
1 | diff --git a/README.md b/README.md |
其中,对于--- a/README.md和+++ b/README.md来说,@@ -1,3 +1,8 @@后的内容每行前为-表示只属于 a/README.md 文件(可以理解为删除的内容行),每行前为+表示只属于 b/README.md(可以理解为新增的内容行),否则是两者均有的内容行(可以理解为没有修改过的内容行)
其中,对于@@ -1,3 +1,8 @@来说:
-表示第 1 个文件,即 a/README.md+表示第 2 个文件,即 b/README.md@@ -1,3 +1,8 @@表示比较的区块为第 1 个文件的第 13 行,第 2 个文件的第 18 行+new line in work dir新增的内容
参考:
Git 的三大工作区域:工作区、暂存区、本地仓库 - 技术栈
Git 基本命令 – 你用过 git diff 吗?补习一下吧
Git 基础-git diff 比较文件的差异-CSDN 博客
[git] 看懂 git diff,及其输出信息 - 一人庸 - 博客园
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Thee!
评论





