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。
这个很棒的功能通常会准确告诉每个块属于哪个函数或类,这对于解释差异非常有用。
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
- 3 回答
- 0 关注
- 892 浏览
添加回答
举报