2014-02-14 133 views
7

git的差異數git的差異 - 忽略重新排序

diff --git a/numbers b/numbers 
index 5f5fbe7..d184fef 100644 
--- a/numbers 
+++ b/numbers 
@@ -1,3 +1,3 @@ 
-1 
+4 
+3 
2 
-3 

號碼重複3,但次序改變。 任何方式來忽略重新排序在git或任何grep解決方案? 我想要只添加和刪除號碼的結果,而不是重新排序相同的號碼 任何幫助?

回答

5

差異化工具通常以Myers的差異算法來實現。控制GNU/git/diff的行爲沒有太多。 (有幾個開關,你可以通過diff來影響行爲,但在你的情況下,它們是無關緊要的。)

你可以簡單地後處理輸出並刪除重複的行,例如你可以管你的差異通過以下awk腳本將刪除(重複) -/+重新排序。

git diff | awk '{ seen[substr($0,2)]++; l[i++] = $0; } END { for (j = 0; j < i; ++j) if (seen[substr(l[j],2)] < 2) print l[j] }' 

對於你的榜樣,輸出會是這樣,

diff --git a/numbers b/numbers 
index 5f5fbe7..d184fef 100644 
--- a/numbers 
+++ b/numbers 
@@ -1,3 +1,3 @@ 
-1 
+4 
2