2016-06-28 137 views
0

所以說我做到哪裏,我在同一個區域編輯多行git的差異,我也得到:有沒有辦法讓git diff顯示的行發生變化?

- Change 1 
+ Change1 
- Change 2 
+ Change2 

我可以更改的diff文件顯示是這樣的順序:

- Change 1 
- Change 2 
+ Change1 
+ Change2 

這樣我可以更容易地顯示我做了什麼改變,如果有人決定與github上的前一個不同我的提交。

回答

1

訂單git diff輸出由源代碼行的順序決定,因爲它依次工作。因此,在SO帖子的主題行中回答問題(「有沒有一種方法可以[重新]排序」)只是「不」。

但是,這似乎不是你的問題打算,根據你的例子。 (好東西,你提供了一個例子!)

讓我們來看看一些實際git diff輸出,以及如何these two command line argument control knobs影響它:

-Un--unified=n

           生成的diff與ñ線的情況,而不是通常的三。意味着-p

--inter-hunk-context=lines

           顯示DIFF大塊之間的範圍內,高達指定的行數,由此熔合是彼此接近大塊。

我做了一個只有README文件的存儲庫,然後對它做了兩處更改。第一個變化是在第1行,第二個是上線9下面是標準git diff輸出:

$ git diff 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,4 +1,4 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
@@ -6,4 +6,4 @@ git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

讓我們用-U從三線以減少上下文的數量只是一個:

$ git diff -U1 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,2 +1,2 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
@@ -8,2 +8,2 @@ the amount of 
context that will 
-be shown. 
+be shown. MOD2 

差異是較短,但仍有一些上下文。 (順便提一句,請注意MOD1沒有「above」上下文,而MOD2沒有「below」上下文,因爲文件沒有高於或低於這一點的行數。通常,如果文件中有更多文本,則兩個git diff輸出會稍微長一些。如果可用的話,我們將在第一行上面有三行上下文,在第一行上面有三行下面的第三行,我們會在第1行上面有1行,在第9行上面有1行。)

增加線-的上下文具有熔合的diff的副作用:

$ git diff -U4 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

這是因爲,與4行第1行的變化以下上下文中,DIFF大塊顯示線1通過5包容;在第9行的變化之上具有4行上下文; diff hunk顯示第5至9行。第5行和第5行是相同的,所以這兩個胖子融合在一起。

或者,使用-U1或有點瘋狂-U0(沒有上下文的話),即使我可以用--inter-hunk-context添加額外方面之間的第一和第二DIFF大塊,達到他們加入點。用-U1,我需要--inter-hunk-context=5才能起作用。

$ git diff -U1 --inter-hunk-context=5 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

這個時候,第一個大塊顯示行1至2,並且所述第二顯示線8通過9.我們添加5條更多的線路,它們是線3,4,5,6,和7-和現在這兩個胖子相鄰並融合成一個差異羣體。

使用-U0,我們需要--inter-hunk-context=7,因爲基差異僅適用於第1行和第9行,並且我們必須添加第2行到第8行(7行)以使它們連接。

還有一個更相關的選項,你可以使用:

-W--function-context

           顯示整個周邊變化的功能。

對於這個特殊的README文件,其中包含純文本英語,這個選項是沒有用的,因爲沒有「功能」中有這樣一個文件。 -W的工作取決於文件的語言,以及Git是否可以識別用該語言編寫的函數。

相關問題