あるブランチでは正常に動作するスクリプトが、別のブランチでは動作しません。2 つのバージョンを並べて比較し、違いを確認したいのですが、その方法はありますか?
誤解のないように言っておきますが、私は比較ツールを探しているわけではありません(私は比較を超える)。マスターバージョンと現在のブランチバージョンを比較して何が変わったかを確認できるGit diffコマンドを探しています。マージの最中などではありません。次のようなことを言いたいだけです。
git diff mybranch/myfile.cs master/myfile.cs
ベストアンサー1
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
ドキュメンテーション):
このフォームは、 と を含むブランチ上の、
<commit>
両方の共通の祖先から始めて、 2 番目の までの変更を表示します<commit>
。git diff A...B
は と同等ですgit diff $(git-merge-base A B) B
。
つまり、master
から分岐してから での変更の差分が表示されますmybranch
(ただし、 以降の での新規変更はありませんmybranch
)。
いずれの場合も、--
ファイル名の前の区切り文字はコマンドラインフラグの終了を示します(区切り文字とファイル名の間のスペースに注意してください)。これは、引数がコミットまたはファイルを参照している場合に Git が混乱しない限りオプションですが、これを含めることは悪い習慣ではありません。Git チェックアウトの二重ダッシュの意味に対する Dietrich Epp の回答いくつかの例を挙げます。
git difftool
設定されている場合は、同じ引数を渡すこともできます。