2014-02-14 93 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