1. git diff介绍
在使用git时,我们经常需要了解当前代码库的变更情况,此时git diff命令便是非常重要的一个工具。git diff可以用来比较两个版本之间的差异,或者用来查看一个文件的变化情况。
1.1 比较两个版本之间的差异
可以使用以下命令比较两个版本之间的差异:
git diff
其中
使用这个命令,可以查看两个版本之间有哪些文件发生了变化,每个文件发生了哪些变化。如下图所示:
git diff a0e9bfa 40ace22
diff --git a/file1.txt b/file1.txt
index e69de29..adcd52c 100644
--- a/file1.txt
+++ b/file1.txt
@@ -0,0 +1 @@
+This is a test file.
diff --git a/file2.txt b/file2.txt
index e69de29..5d24ead 100644
--- a/file2.txt
+++ b/file2.txt
@@ -0,0 +1,2 @@
+This is file2.
+It is a test file.
其中diff后面的+/-号表示新增/删除的内容,例如在file1.txt中新增了"This is a test file."。
1.2 查看一个文件的变化情况
可以使用以下命令查看一个文件的变化情况:
git diff --
使用这个命令,可以查看这个文件自一个版本到另一个版本之间发生了哪些变化。如下图所示:
git diff a0e9bfa 40ace22 -- file1.txt
diff --git a/file1.txt b/file1.txt
index e69de29..adcd52c 100644
--- a/file1.txt
+++ b/file1.txt
@@ -0,0 +1 @@
+This is a test file.
表示file1.txt文件在a0e9bfa版本和40ace22版本之间新增了"This is a test file."这一行。
2. git diff常用选项
以下是常用的git diff选项:
2.1 --cached选项
--cached选项可以用来比较缓存区(stage)和HEAD版本之间的差异,即查看已经add但还没有commit的变化情况。
git diff --cached
可以使用以上命令查看当前缓存区和HEAD版本之间的差异
在使用git add命令将工作区的改动提交到缓存区时,就可以先使用git status命令查看工作区和缓存区之间的差异,然后使用git diff --cached查看具体的变化内容。
2.2 -w选项
-w选项可以用来忽略空格差异。
git diff -w
使用这个命令可以查看两个版本之间的差异,但是忽略空格差异。例如下面这个例子:
git diff a0e9bfa 40ace22
diff --git a/file.txt b/file.txt
index e69de29..73bdf51 100644
--- a/file.txt
+++ b/file.txt
@@ -1,4 +1,4 @@
-Hello, world!
+Hello, world!
!
可以看到只是空格有所变化,使用-w选项之后:
git diff -w a0e9bfa 40ace22
diff --git a/file.txt b/file.txt
index e69de29..73bdf51 100644
--- a/file.txt
+++ b/file.txt
@@ -1,4 +1,4 @@
-Hello, world!
+Hello, world!
可以看到空格变化并没有被显示。
2.3 --stat选项
--stat选项可以用来查看变更的统计信息,包括修改的文件数、插入的行数、删除的行数等。
git diff --stat
使用这个命令可以查看两个版本之间变更的文件数和文件中插入、删除的行数。如下面这个例子:
git diff --stat a0e9bfa 40ace22
file1.txt | 1 +
file2.txt | 2 ++
2 files changed, 3 insertions(+)
表示在a0e9bfa版本和40ace22版本之间,共修改了2个文件,插入了3行。
2.4 --color选项
使用--color选项可以将diff结果以彩色显示。
git diff --color
使用这个命令可以将diff结果以彩色显示,使得变更更加直观。例如下图所示:
git diff --color a0e9bfa 40ace22
3. git diff其他应用
除了上面介绍的用法之外,git diff还可以用来做许多其他有用的事情。
3.1 查看某个文件的某一行的变化
如果只是想查看某个文件的某一行的变化,可以使用以下命令:
git diff -- -L :
例如想要查看file1.txt文件中第一行的变化:
git diff a0e9bfa -- file1.txt -L 1:1
3.2 生成补丁文件
可以使用git diff命令生成补丁文件,将变更内容保存到一个文件中,方便发送给其他人以进行代码审查或者应用到其他分支上。
git diff > patchfile
可以将变更内容保存到patchfile文件中
3.3 比较分支之间的差异
可以使用以下命令比较两个分支之间的差异:
git diff
其中
使用这个命令,可以查看两个分支之间有哪些文件发生了变化,每个文件发生了哪些变化。同样可以使用上面介绍的选项。例如下面这个命令可以查看master分支和dev分支之间的差异:
git diff master dev
在代码开发过程中,分支之间的差异比较经常出现,对于这类情况,我们可以在普通的git diff命令中加上--color选项来更好地查看具体的变化情况,使得变化更加直观。
3.4 比较远程仓库和本地仓库之间的差异
可以使用以下命令比较远程仓库和本地仓库之间的差异:
git diff HEAD /
这个命令可以查询到远程仓库和本地仓库之间的差异,就像查询两个本地分支之间差异一样,同样可以使用上面介绍的选项。
总结
git diff是git中非常重要的一个命令,可以用来比较两个版本之间的差异,或者查看一个文件的变化情况。在实际开发中,使用git diff可以使得代码变化更加直观,帮助我们快速的定位问题并修复问题。在使用git diff的过程中,还需要熟悉一些常用选项,例如--cached选项来比较缓存区和HEAD版本之间的差异,-w选项来忽略空格差异,--stat选项来查看变更的统计信息等等。除此之外,git diff还可以用来做许多其他的事情,如查看某个文件的某一行的变化、生成补丁文件、比较分支之间的差异等等,这些功能都可以帮助我们更好的管理和维护代码库。