为了账号安全,请及时绑定邮箱和手机立即绑定

如何从git diff读取输出?

如何从git diff读取输出?

Git
隔江千里 2019-11-21 10:51:05
的手册页git-diff相当长,其中介绍了许多初学者似乎不需要的情况。例如:git diff origin/master
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

@@ -1,2 +3,4 @@ 差异的一部分


这部分花了我一些时间来理解,因此我创建了一个最小的示例。


格式与diff -u统一差异基本相同。


例如:


diff -u <(seq 16) <(seq 16 | grep -Ev '^(2|3|14|15)$')

在这里,我们删除了第2、3、14和15行。输出:


@@ -1,6 +1,4 @@

 1

-2

-3

 4

 5

 6

@@ -11,6 +9,4 @@

 11

 12

 13

-14

-15

 16

@@ -1,6 +1,4 @@ 手段:


-1,6表示第一个文件的这一部分从第1行开始,总共显示6行。因此,它显示第1至6行。


1

2

3

4

5

6

-表示“旧”,因为我们通常将其称为diff -u old new。


+1,4表示第二个文件的这一部分从第1行开始,总共显示4行。因此,它显示第1至4行。


+ 表示“新”。


我们只有4行而不是6行,因为删除了2行!新的大块头就是:


1

4

5

6

@@ -11,6 +9,4 @@ 第二个大块是类似的:


在旧文件上,我们有6行,从旧文件的第11行开始:


11

12

13

14

15

16

在新文件上,我们有4行,从新文件的第9行开始:


11

12

13

16

请注意,该行11是新文件的第9行,因为我们已经删除了前一个大块的2行:2和3。


大块头


根据您的git版本和配置,您还可以在该行旁边获得一个代码@@行,例如func1() {in:


@@ -4,7 +4,6 @@ func1() {

也可以使用-pplain标志获得diff。


示例:旧文件:


func1() {

    1;

    2;

    3;

    4;

    5;

    6;

    7;

    8;

    9;

}

如果我们删除line 6,则差异显示:


@@ -4,7 +4,6 @@ func1() {

     3;

     4;

     5;

-    6;

     7;

     8;

     9;

请注意,这不是正确的行func1:它跳过了行1和2。


这个很棒的功能通常会准确告诉每个块属于哪个函数或类,这对于解释差异非常有用。


查看完整回答
反对 回复 2019-11-21
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

这是简单的例子。


diff --git a/file b/file 

index 10ff2df..84d4fa2 100644

--- a/file

+++ b/file

@@ -1,5 +1,5 @@

 line1

 line2

-this line will be deleted

 line4

 line5

+this line is added

这是一个解释(在此处查看详细信息)。


--git 不是命令,这意味着它是diff的git版本(不是unix)

a/ b/是目录,它们不是真实的。当我们处理相同的文件时,这只是一种方便(在我的情况下,a /在索引中,而b /在工作目录中)

10ff2df..84d4fa2 是这2个文件的Blob ID

100644 是“模式位”,表示这是一个常规文件(不是可执行文件,不是符号链接)

--- a/file +++ b/file减号显示a /版本中的行,但b /版本中缺少行;加号显示a /中缺少的行,但b /中存在(在我的情况下---表示已删除的行,+++表示b /中已添加的行,并且这是工作目录中的文件)

@@ -1,5 +1,5 @@为了理解这一点,最好使用大文件;如果您在不同的地方进行了两次更改,您将得到两个条目@@ -1,5 +1,5 @@; 假设您有文件line1 ... line100,并删除了line10并添加了新的line100-您将获得:

@@ -7,7 +7,6 @@ line6

 line7

 line8

 line9

-this line10 to be deleted

 line11

 line12

 line13

@@ -98,3 +97,4 @@ line97

 line98

 line99

 line100

+this is new line100


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 892 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信