1. ホーム
  2. git

[解決済み] 異なる2つのブランチのファイルを比較する方法

2022-03-15 14:22:50

質問

あるブランチで正常に動作し、別のブランチでは壊れているスクリプトがあります。2つのバージョンを並べて見て、どこが違うのかを確認したいのですが。これを実行する方法はありますか?

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

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

解決方法は?

git diff は、2つのコミットの違いを表示することができます。

git diff mybranch master -- myfile.cs

あるいは、同等に

git diff mybranch..master -- myfile.cs

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

後者の構文を用いると、どちらかが HEAD を省略することができる(例. master.. 比較する master から HEAD ).

こちらもどうぞ mybranch...master から git diff ドキュメンテーション ):

このフォームは、2つ目までを含むブランチの変更を表示するためのものです。 <commit> の共通の祖先から始まり <commit> . git diff A...B は、次のように等価です。 git diff $(git-merge-base A B) B .

つまり、これは、以下のような変更の差分を与える。 master と分岐しているため mybranch (でのそれ以降の新たな変更はありません)。 mybranch ).


いずれの場合も -- のセパレータは、コマンドライン・フラグの終了を示します。引数がコミットを指しているのかファイルを指しているのかGitが混乱しない限り、これはオプションです。しかし、これを含めることは悪い習慣ではありません。参照 に対する Dietrich Epp の回答です。 Git チェックアウトのダブルダッシュの意味 をご覧ください。


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