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 關注
- 941 瀏覽
添加回答
舉報