簡體   English   中英

Git diff - 忽略重新排序

[英]Git diff - ignore reorder

git diff數字

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解決方案中的重新排序? 我想要只添加和刪除數字的結果,而不是重新排序相同的數字任何幫助?

衍射工具通常根據邁爾斯的diff算法實現。 你無法控制GNU / git / diff的行為。 (有幾個開關可以傳遞給diff來影響行為,但在你的情況下它們是不相關的。)

您可以簡單地對輸出進行后處理並刪除重復的行,例如,您可以通過以下將刪除(復制) - / +重新排序的awk腳本來管道您的diff。

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

如果它是單個文件,則可以這樣做:

diff -u <(sort ./numbers) <(git show HEAD^^:./numbers | sort)

運行此命令將告訴您排序的文件是否會引入任何其他差異(即忽略行順序)。 如果有任何抑制線或新線,您將看到它們,但請注意,差異輸出可能不准確(文件已經排序,因此這些線可能以不同的順序打印)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM