如何使用git比较不在仓库中的两个文件


Answers:


214

git的diff比标准的unix功能更强大diff。我经常想这样做,并且由于这个问题在Google上的排名很高,所以我希望这个答案能够显示出来。

这个问题:如何git diff --color-words在Git仓库之外使用?

通过使用以下命令显示如何使用git来对文件中至少一个不在存储库中的文件进行区分--no-index

git diff --no-index file1.txt file2.txt

git跟踪哪个跟踪无关紧要-可以取消跟踪一个或两个跟踪跟踪,例如:

$ date > x
$ sleep 2
$ date > y
$ git diff --color-words --no-index x y
diff --git a/x b/y
index 6b10c7c..70f036c 100644
--- a/x
+++ a/y
@@ -1 + 1 @@
Wed Jun 10 10:57:45|10:57:47 EDT 2013

颜色无法在此处显示,因此在示例中我使用管道将更改分开。


14
如果你想这种行为的默认,你可以一个别名添加到您的.bashrc文件(或者无论你使用):alias diff="git diff --no-index"
counterbeing

1
仅供参考:在Windows的Git上,存在一个错误(#2123),该错误不遵守“ --no-index”。此问题已在Git for Windows v2.21.0(2019年2月26日)中修复。
StackzOfZtuff

“索引6b10c7c..70f036c 100644”行是什么意思?我正在比较2个二进制文件,它们不同,但这是唯一具有差异的行……
Lukas Salich

嗨@LukasSalich,看来该行格式可能是由git记录的(例如:git-scm.com/docs/diff-format)git的diff不会尝试对二进制afaik进行比较,所以我猜这行意味着它们不同,两个SHA分别在其中标识了更改,然后标识了文件的权限。
凯尔·伯顿


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.