回答
這些被稱爲(c)hunk標題幷包含範圍信息。
它們被雙號標記@@
包圍。它們的格式:
@@ -l,s +l,s @@
其中l
是起始行號和s
是變化的(c)中大塊適用於每個各自文件的行數。 -
表示原始文件,+
表示新的(修改)文件。請注意,它不僅顯示受影響的行,還顯示上下文行。
該-1,5
是在原始文件中(由-
指示)。它顯示第一行是開始和5個受影響/上下文行
+1,9
在新的(修改)文件中(由+
指示),並且第一行是開始行和9個受影響/上下文行。
所以數字指的是大塊+上下文?即由git打印的行是大塊(改變)行加上前面3行和後面3行的大塊(改變)行。所以線的範圍是從上下文開始到上下文結束,即從第一個變化線之前的3個線到最後一個變化線之後的3個線? – Will 2017-08-24 16:11:28
這些描述了diff diff的影響。在你的情況下,這意味着大塊會影響從第1行開始的5行,從而導致從第1行開始的替換,這是9行長。
請注意,這是統一差異格式所使用的格式。 「古典」差異格式使用不同的模型(但是最近使用經典差異?)。
簡單的例子分析
格式基本相同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 2 3 4 5 6
-
意味着「舊」,因爲我們通常將其作爲diff -u old new
。+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() {
中:
@@ -4,7 +4,6 @@ func1() {
這也可以用平紋diff
的-p
標誌獲得。
舉例:舊文件:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
如果我們刪除線6
中,DIFF顯示:
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
請注意,這不是func1
正確的路線:它跳過線1
和2
。
這個令人敬畏的功能常常精確地告訴每個大塊屬於哪個函數或類,這對解釋diff是非常有用的。
如何選擇標題中的算法工作完全是在討論:Where does the excerpt in the git diff hunk header come from?
- 1. git diff中的兩個加號是什麼意思?
- 2. 當我運行svn diff時,'MM'是什麼意思?
- 3. Git Diff標題上的數字是什麼意思?
- 4. 爲什麼'svn diff --diff-cmd = diff'輸出內部diff格式?
- 5. 「git diff」中的「diff --git」輸出是指什麼?
- 6. git diff --patience是什麼?
- 7. ++和+ - 在Debian diff文件中是什麼意思?
- 8. 這些git符號是什麼意思?
- 9. git diff用於diff命令的參數是什麼?
- 10. `git diff HEAD ^`的反義詞是什麼?
- 11. 什麼是`git diff --word-diff'默認正則表達式?
- 12. 意外導致的git-DIFF
- 13. 符號「⊇」是什麼意思?
- 14. &符號是什麼意思?
- 15. 符號「#!」是什麼意思?在Python中的意思是?
- 16. 在R中「:=」符號是什麼意思?
- 17. TSQL中的「#」符號是什麼意思?
- 18. Linux中的符號^ \意思是什麼
- 19. 當使用git svn時,什麼是生成svn兼容diff的最佳方式?
- 20. Javascript中的符號「:」是什麼意思?
- 21. PowerShell中的&符號是什麼意思?
- 22. `git diff`和`git difftool`有什麼區別?
- 23. 爲什麼git difftool會使用git diff?
- 24. 當git diff不是
- 25. 在Perl中,美元符號後跟問號是什麼意思?
- 26. JavaScript中的$符號是什麼意思?
- 27. JSP中的$符號是什麼意思
- 28. diff --staged與git中的staged文件進行比較是什麼?
- 29. 如何讓svn diff看起來像diff?
- 30. svn diff彙總
超集:http://stackoverflow.com/questions/2529441/how-to-work-with-diff-representation-in-git/31615438#31615438 – 2015-07-24 16:25:55