git diff numbers
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来影响行为,但在你的情况下,它们是无关紧要的。
您可以简单地对输出进行后处理并删除重复的行,例如,您可以通过以下 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
如果是单个文件,可以这样完成:
diff -u <(sort ./numbers) <(git show HEAD^^:./numbers | sort)
运行此命令将告诉您排序的文件是否会引入任何其他差异(即忽略行顺序)。如果有任何隐含行或新行,您将看到它们,但请注意差异输出可能不准确(文件已排序,因此这些行可能以不同的顺序打印)。