あるブランチではうまく機能し、別のブランチでは機能しないスクリプトがあります。 2つのバージョンを並べて見て、何が違うのかを確認したいと思います。これを行う方法はありますか?
明確にするために 私は比較ツールを探していない(私はBeyond Compareを使用しています)。変更点を確認するために、マスターバージョンと現在のブランチバージョンを比較できるようにする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
後者の構文を使用して、どちらかの側がHEAD
である場合、それは省略することができます(例えばmaster..
はmaster
をHEAD
と比較します)。
mybranch...master
にも興味があるかもしれません( git diff
docs から):
このフォームは、2つの
<commit>
の共通の先祖から始めて、2番目の<commit>
を含むブランチの変更を表示するためのものです。git diff A...B
はgit diff $(git-merge-base A B) B
と同等です。
言い換えれば、これはmaster
から分岐しているのでmybranch
の変更の差分を示します(ただし、それ以降はmybranch
に新しい変更はありません)。
すべての場合において、ファイル名の前の--
区切り文字はコマンドラインフラグの終わりを示します。引数がコミットまたはファイルを参照している場合にGitが混乱しない限り、これはオプションですが、それを含めることは悪い習慣ではありません。いくつかの例については https://stackoverflow.com/a/13321491/54249 を参照してください。
同じ引数をgit difftool
に渡しても構いません。
これができます: git diff branch1:file branch2:file
Difftoolが設定されている場合は、次のこともできます。 git difftool branch1:file branch2:file
より現代的な構文:
git diff ..master path/to/file
二重ドットの接頭辞は「現在の作業ディレクトリから」までを意味します。と言うこともできます:
master..
、つまり上記の逆。これはmaster
と同じです。mybranch..master
。v2.0.1..master
、つまりタグの参照.[refspec]..[refspec]
、基本的にgitのコード状態として識別可能なもの。2つの異なるブランチからファイルを比較する方法はたくさんあります。
オプション1: n特定のブランチから別の特定のブランチへファイルを比較したい場合:
git diff branch1name branch2name path/to/file
例:
git diff mybranch/myfile.cs mysecondbranch/myfile.cs
この例では、“ mybranch”ブランチのファイルと“ mysecondbranch”ブランチのファイルを比較しています。
オプション2: 簡単な方法:
git diff branch1:file branch2:file
例:
git diff mybranch:myfile.cs mysecondbranch:myfile.cs
この例は、オプション1と似ています。
オプション3: /現在の作業ディレクトリを他のブランチと比較したい場合:
git diff ..someBranch path/to/file
例:
git diff ..master myfile.cs
この例では、実際のブランチのファイルとマスターブランチのファイルを比較しています。
私は単にgit diff branch1 branch2 path/to/file
をします
これはファイル間の違いをチェックします。 branch1
の変更は赤字になります。 branch2
の変更は緑色になります。
branch1
は過去、branch2
は未来です。 diffのブランチの順番を逆にすることでこれを逆にすることができます:git diff branch2 branch1
@dahlbykが提案した答えに同意する。コードレビュー用に差分を差分ファイルに書き込む場合は、次のコマンドを使用します。
git diff branch master -- filepath/filename.extension > filename.diff --cached
現在のブランチに対して差分を作成したい場合は、それを省略して使用できます。
git diff BRANCH -- path/to/file
このようにして、それは現在のブランチから参照されているブランチ(BRANCH)へと拡散します。
私の場合は、下記のコマンドを使用します。
git diff <branch name> -- <path + file name>
このコマンドは、2つの異なるブランチで同じファイルを比較するのに役立ちます。
これを行う最良の方法は、次のようにgit diff
を使用することです。 git diff <source_branch> <target_branch> -- file_path
それらのブランチのファイル間の違いをチェックします。 gitコマンド およびそれらがどのように機能するかについての詳細はこの記事を見てください。
このようにコミットハッシュを使用します。
git diff <hash1> <hash2> <filename>
ここで hash1 は任意のブランチからの任意のコミットで、 hash2 と同じです。
Git bash内の2つのファイルを比較するためには、以下のコマンドを使用する必要があります。
git diff <Branch name>..master -- Filename.extension
このコマンドはbash自体の2つのファイルの違いを表示します。