git diff 命令

Git 基本操作Git 基本操作

git diff 命令用于比较 git 工作区、暂存区和版本库中文件内容的差异。

 

1. 查看工作区与暂存区的差异

git diff 不加参数,默认比较工作区与暂存区的所有文件的差异。

git diff

查看文件 filename 在工作目录与暂存区的差异。若是还没 add 进暂存区,则查看文件自身修改先后的差异。

git diff <filename>

 

2. 查看暂存区与 Git 仓库的差异

查看已经 add 进暂存区可是还没有 commit 的内容同最近一次 commit 时的内容的差异。

git diff --cached <filename>

也能够指定仓库版本:

> git diff --cached <commit> <filename>

 

3. 查看工做目录与 Git 仓库的差异

查看工做目录同Git仓库指定 commit 的内容的差异。

git diff <commit> <filename>

<commit>=HEAD 时:查看工做目录同最近一次 commit 的内容的差异。

 

4. 查看 Git 仓库与 Git 仓库的差异

查看 Git 仓库任意两次 commit 之间的差异。

git diff <commit> <commit>

 

5. 常用约定和参数

以上命令能够不指定 <filename>,则对所有文件操做。 以上命令涉及和 Git仓库 对比的,都可指定 commit 的版本。

  • HEAD 表示最近一次 commit
  • HEAD^ 表示上次提交
  • HEAD~100 表示上100次提交

 

6. diff 文件的解释

使用 git diff 命令,会产生 diff 格式的输出。例如:

@@ -6,16 +6,16 @@
         <id>
-            <column name="id" />
+            <column name="ID" />
             <generator class="identity" />
         </id>
 
         <property>
-            <column name="code" />
+            <column name="CODE" />
         </property>
 
         <property>
-            <column name="name" />
+            <column name="NAME" />
         </property>

以上是 git diff 命令产生的比较的结果,分析如下:

- 表明修改前的文件,+ 表明修改后的文件。

@@ 后面的 第一个 6,16 指的是下边列出的内容是修改前的文件从第 6 行开始,连续 16 行。第二个 6,16 只的是下边的内容是修改后的文件从第 6 行开始,连续 16 行。

Git 基本操作Git 基本操作