git diff正确用法

1. git diff介绍

在使用git时,我们经常需要了解当前代码库的变更情况,此时git diff命令便是非常重要的一个工具。git diff可以用来比较两个版本之间的差异,或者用来查看一个文件的变化情况。

1.1 比较两个版本之间的差异

可以使用以下命令比较两个版本之间的差异:

git diff

其中为提交记录的ID,可以使用git log命令查看

使用这个命令,可以查看两个版本之间有哪些文件发生了变化,每个文件发生了哪些变化。如下图所示:

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 --

为提交记录的ID,为文件的路径

使用这个命令,可以查看这个文件自一个版本到另一个版本之间发生了哪些变化。如下图所示:

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 :

为提交记录的ID,为文件的路径,为行号

例如想要查看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还可以用来做许多其他的事情,如查看某个文件的某一行的变化、生成补丁文件、比较分支之间的差异等等,这些功能都可以帮助我们更好的管理和维护代码库。