git diff 2つのファイルを同じブランチで同じコミット


97

申し訳ありませんが、この質問が存在する場合、私は驚くことにそれを見つけることができませんでした:/

git diff同じブランチと同じコミット内の2つのファイル間でaを実行するにはどうすればよいですか?

すなわち git diff fileA.php fileB.php

(理想的には、git提供する読みやすいカラーコーディングで...またはBeyondCompareプログラムが行うものと同様です!)


注:Git:異なるコミットで2つの異なるファイルを比較する方法は?この質問よりも少し一般的ですが、答えは基本的にこの質問に対する正しい答えと同じであり、それらのすべての偽の答えはありません。そのため、私はこれを誤ったものとして締めくくることに投票しました。
SamB

回答:


84

そのためにgitは必要ありません。使用するdiff fileA.php fileB.phpか、並べて比較したい場合はvimdiffを使用してください。


22
vimdiff勝利のために!ありがとう!
D -_- B

24
これはうまくいくかもしれませんが、git diffではありません。それは完全に異なる出力フォーマットです。
daboross 2014

11
これは元の質問の答えにはなりません
DylanYoung

8
OPは明確ではありませんでしたが、彼がBeyondCompareについて言及しているという事実は、彼が明確に探しているのではgit diffなく、単に読みやすい差分を探していることを示しています。また、彼が探していたものとして彼が私の答えを受け入れたという事実は、それが実際に答えていることも示しています。
JaredMcAteer 2016

3
答えをよく読んでください。コマンドはdiff fileA fileBそうではありませんgit diff fileA fileB
マシュー・ヒネア

247

あなたが使用したい場合はgit diff、あなたが使用できる2つの任意のファイルにgit diff --no-index <file_a> <file_b>gitこれが機能するために、2つのファイルを追跡する必要はありません。


32
最初の質問に答えるときの+1(「なぜそうするのか」に関係なく...理由がある場合があります)
NobodysNightmare 14年

19
--word-diff行だけでなく単語ごとの変更を強調表示
user3148949 '27 / 10/27

2
PowerShellを使用している私たちにとって、これはリポジトリ内の2つのファイルの差分を取得するはるかに簡単な方法です。
ジェイ・ソイヤー

2
「アクティブ」で並べ替える場合、この優れた回答は下の2つ前にリストされていて、投票数が少ない(そしてあまり役に立たない)回答はどうですか。正解としてマークされた答えも数えていません。まあありがとう!
j_random_hacker

@daboross GNU diffutils 3.4以降(2016-08-08)ではdiffhasがあり--color、役立つ場合があります(unix.stackexchange.com/a/338960を参照)。しかし、それでも、を使用diff-so-fancyする場合、の特定の出力形式が必要なようですgit diffdiff -ustackoverflow.com/a/4857407/10095231を参照)が機能しません。
ケルビン

14

比較するファイルが作業コピーにある場合はdiff、他のファイルから指摘されたとおりに使用できますが、ファイルが一部のリビジョンにある場合は、各ファイルのリビジョンを指定できます

git diff <revision_1>:<file_1> <revision_2>:<file_2>

ここで述べたように:https : //stackoverflow.com/a/3343506/1815446

あなたの場合(両方のファイルに同じリビジョンを指定する):

git diff <revisionX>:fileA.php <revisionX>:fileB.php

注:リビジョンHEAD~2、SHA-1、ブランチ名などにすることができます
ma11hew28

これは私にとってはうまくいきました、2つの異なるディレクトリからのファイル名を比較するだけです:両方のディレクトリのgit diff --name-only HEAD:dir1 HEAD:dir1_backup 後に動作しgit addます。
フランクフォルテ

1
これは、リビジョンが作業ツリーにチェックアウトされていない場合、または作業ツリーファイルが変更されてオリジナルを比較したい場合、または裸のgitリポジトリのように作業ツリーがまったくない場合に機能します。この非常に評価された質問に、まだ有用であるがまったく異なる質問に答える非常に評価された回答があることは残念です。
TrentP

4

通常のgnu diffをgit diffのようにするには、次のパラメーターをお勧めします。

diff -burN file_or_dir1 file_or_dir2

-bスペースを無視する、-u統一されたdiff、-r再帰的、-N欠落ファイルをとして扱う/dev/null)。

うまく機能しますが、まだ色はなく、gitスタイルの自動ページングは​​事実上ありません。両方を修正したい場合は(私は行います)、次のようにインストールcolordiffして使用します。

colordiff -burN file_or_dir1 file_or_dir2 | less -R

これにより、実際のに非常に近い出力とインターフェイスが提供されますgit diff


4
「できない」が正しくないため-1(see:stackoverflow.com/a/13965200/968531
NobodysNightmare '25 / 03/25

「できない」を削除し、colordiffのインストール手順を追加します。これは、元の質問に対するOKの回答になる可能性があります。
DylanYoung


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