2つの異なるブランチのファイルを比較する方法 質問する

2つの異なるブランチのファイルを比較する方法 質問する

あるブランチでは正常に動作するスクリプトが、別のブランチでは動作しません。2 つのバージョンを並べて比較し、違いを確認したいのですが、その方法はありますか?

誤解のないように言っておきますが、私は比較ツールを探しているわけではありません(私は比較を超える)。マスターバージョンと現在のブランチバージョンを比較して何が変わったかを確認できるGit diffコマンドを探しています。マージの最中などではありません。次のようなことを言いたいだけです。

git diff mybranch/myfile.cs master/myfile.cs

ベストアンサー1

git diff2 つのコミットの違いを表示できます:

git diff mybranch master -- myfile.cs

または、同等のものとして:

git diff mybranch..master -- myfile.cs

ファイルへの相対パスを指定する必要があることに注意してください。したがって、ファイルが src ディレクトリにある場合は、src/myfile.csの代わりに と指定しますmyfile.cs

後者の構文を使用する場合、どちらかの側が でHEADあれば省略できます (例:master..比較)。masterHEAD

あなたも興味があるかもしれませんmybranch...master(からgit diffドキュメンテーション):

このフォームは、 と を含むブランチ上の、<commit>両方の共通の祖先から始めて、 2 番目の までの変更を表示します<commit>git diff A...Bは と同等ですgit diff $(git-merge-base A B) B

つまり、masterから分岐してから での変更の差分が表示されますmybranch(ただし、 以降の での新規変更はありませんmybranch)。


いずれの場合も、--ファイル名の前の区切り文字はコマンドラインフラグの終了を示します(区切り文字とファイル名の間のスペースに注意してください)。これは、引数がコミットまたはファイルを参照している場合に Git が混乱しない限りオプションですが、これを含めることは悪い習慣ではありません。Git チェックアウトの二重ダッシュの意味に対する Dietrich Epp の回答いくつかの例を挙げます。


git difftool設定されている場合は、同じ引数を渡すこともできます。

おすすめ記事