解释git diff输出

时间:2014-12-16 16:11:20

标签: git diff

我一直使用git但是从未使用过diff命令我今天开始使用它但我真的不明白输出...我有一个文件,我删除了第3行和第4行,我得到了以下输出但有人可以帮助我理解输出的线条在虚拟术语中意味着什么。感谢

$ git diff
diff --git a/README.txt b/README.txt
index 15827f4..8115e72 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,2 @@
 this file
 adding like
-line 3
-

2 个答案:

答案 0 :(得分:6)

第1行:用于产生差异的命令。

第2行:git所涉及的两个文件的数据库信息。

第3行和第4行:---表示旧文件,+++表示新文件。

第5行:@@表示下一个 diff hunk 中表示的行范围。 -1,4表示旧文件中的第1-4行,+1,2表示新文件中的第1-2行。

其余行是原始文件中的行,前缀为(空格),-+行有新旧两种,-只有旧版,+只有新版。

这些是助记符:-是"删除的行",是"未更改的行"和+是& #34;添加了行"。

答案 1 :(得分:0)

它只是统一的差异格式。

这是产生此输出的命令行,只是为了检查任何特殊标志:

diff --git a/README.txt b/README.txt

这是文件

的索引和unix权限(0644)的哈希值
index 15827f4..8115e72 100644

这一行告诉您将看到的-+所指的文件:

--- a/README.txt
+++ b/README.txt

这里没有那么有用,但如果你将diff应用于不同的文件名(仍然记得这是一般格式),它可能是。

遵循上下文,也就是说引用差异的行(对于文件-,行1,col 4;对于文件+,行1 col 2):

@@ -1,4 +1,2 @@

上下文可能还包含更改所在的函数的名称,这样即使您进一步修改了文件,diff也可以工作,只要应用更改的位置可以位于。

最后,这是变更集:

 this file
 adding like
-line 3
-

表示您已删除这两行,因为它们位于-(旧)文件中,但不在新文件中(没有+行)。