gitを使用してリポジトリにない2つのファイルを比較する方法


114

どのgitリポジトリにもない2つのcssファイルを比較したいと思います。gitにそのような機能はありますか?


--patienceフラグを使用したい場合はどうなりますか?それができるdiff(1)を知っていますか?
SamB

カイルバートンの答えを受け入れる必要があります。
BrodieG 2016

回答:


214

gitのdiffは、標準のUNIXよりも機能的diffです。私はよくこれをしたいと思います。この質問はグーグルで上位にランク付けされるので、私はこの答えを表示したいと思います。

この質問:Gitリポジトリの外で使用する方法git diff --color-words

次のコマンドを使用して、少なくとも1つのファイルがリポジトリにない場合に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
参考:Git for Windowsでは、「-no-index」が尊重されないというバグ(#2123)がありました。これは、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を比較しようとしないので、行が異なることを意味していると思います、変更が識別された2つのSHAと、ファイルのアクセス許可。
カイルバートン

3

diff -u

同様の統一されたコンテキスト出力をgitのdiffに提供します。


1
ただし、適切なカラーリングやページャの使用は行いません。
Xiong Chiamiov

いい単語のdiffも許可しません(git diff --word-diff)。
Stefan van den Akker

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.