2つの異なるファイル間のgit diff


108

HEAD(最新のコミット)、私は名前のファイルを持っていますfoo。現在の作業ツリーで、名前をに変更しbar、編集しました。

私がしたいgit diff fooではHEAD、とbar私の現在の作業ツリーインチ


64
このタイトル(タイトルから)は、必ずしもリポジトリにあるとは限らない2つのファイルに対してgit diffを使用することに関するものである可能性があると思いました。たとえばgit diff --no-index --word-diff old_file.txt new_file.txt、-no -indexフラグがそのためであることがわかりました(たとえば、-word-diffは、行ごとではなく単語ごとの変更を強調表示します。これは長いテキストに非常に役立ちます)。
パット

回答:


134

パスを明示的に指定します。

git diff HEAD:full/path/to/foo full/path/to/bar

ドキュメント--find-renamesオプションを確認してください。git-diff

クレジット:twaggs


8
言及したいのgit diff <path> <path>は、gitリポジトリにないファイルでも、2つのファイルを比較できることです。
mitenka 2017年

1
@mitenka私はそうは思いません。見てみるとgit diff --help、2つのファイルでサポートされているパターンはだけであることがわかりますgit diff [<options>] --no-index [--] <path> <path>git diff a bファイルではなく、コミットパターンのみに一致します。
ダグ

@Dougこれは、あなたが言及したヘルプコマンドgit-scm.com/docs/git-diffからの引用です:ディスク上の2つのファイル間の変更を表示[...]します。
mitenka

@mitenkaヘルプが言う、「-no-index」を使用しない限り、ファイルを比較しません。コメントは別の答えにする必要があります。それは真実ではなく、この回答には関係ありません。
ダグ

@Dougご意見ありがとうございます。参照するヘルプの引用は次のとおりです--no-index。Gitで制御されている作業ツリーでコマンドを実行し、少なくとも1つのパスが作業ツリーの外を指している場合、またはGitで制御されている作業ツリーの外でコマンドを実行する場合は、オプションを省略できます。 。
mitenka

77

私は--no-indexあなたが探しているものを使用すると信じています:

git diff [<options>] --no-index [--] <path> <path>

gitマニュアルで述べたように:

このフォームは、ファイルシステム上の指定された2つのパスを比較するためのものです。Gitによって制御されている作業ツリーでコマンドを実行し、少なくとも1つのパスが外部を指している場合--no-indexオプションを 省略できます。が作業ツリーのている場合、またはGitによって制御されている作業ツリーの外で


1
@sweこれは間違いなく便利な回答ですが、OPはファイルがHEADにあると具体的に述べています。つまり、それはgitインデックスにあるということです。受け入れられた回答は、質問に直接対処します。また、承認された回答には6年の頭のスタートがありました;)
Michael Delgado

3
これはOPの助けにはならなかったかもしれませんが、まさに私が探していたものでした。
thislooksfun

これは、Webでこれをダッキングしていた場合、タイトルで投稿された質問に回答します。
マーリン

3

Tortoise gitを使用している場合は、ファイルを右クリックしてgit diffを実行できます。最初のファイルを右クリックし、tortoisegitサブメニューから[後で比較]を選択します。2番目のファイルでこれを右クリックすることもできます。 、tortoisegitサブメニューに移動し、[Diff with yourfilenamehere.txt]を選択します


-12

PhpStormを使用して、前のコミットコードをコピーし、組み込みの「クリップボードと比較」ツールを使用して現在のバージョンと比較します。


5
PhpStormは商用IDEです。この質問は、git cli内でこれを行う方法についてであり、追加のソフトウェアを想定していません。
チャールズテイラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.