亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從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 關注
  • 941 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號