1901

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

明確にするために、私は比較ツールを探していません (私はBeyond Compareを使用しています)。マスター バージョンと現在のブランチ バージョンを比較して変更点を確認できる Git diff コマンドを探しています。私は合併などの最中ではありません。みたいなことを言いたいだけ

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

14 に答える 14

2650

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

git diff mybranch master -- myfile.cs

または、同等に:

git diff mybranch..master -- myfile.cs

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

後者の構文を使用すると、いずれかの側がHEAD省略される場合があります (たとえば、master..と比較masterHEADます)。

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

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

言い換えると、これはmasterから分岐してからの の変更の差分を示しますmybranch(ただし、 のそれ以降の新しい変更はありませんmybranch)。


いずれの場合も、--ファイル名の前のセパレータは、コマンド ライン フラグの終わりを示します。引数がコミットまたはファイルを参照する場合に Git が混乱しない限り、これはオプションですが、それを含めることは悪い習慣ではありません。いくつかの例については、Git checkout double dashes の意味に対する Dietrich Epp の回答を参照してください。


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

于 2010-11-04T18:13:11.293 に答える
506

あなたはこれを行うことができます: git diff branch1:path/to/file branch2:path/to/file

difftool が構成されている場合は、次のこともできます。 git difftool branch1:path/to/file branch2:path/to/file

関連する質問: 好みの差分ツール/ビューアで「git diff」出力を表示するにはどうすればよいですか?

于 2010-11-04T18:12:07.577 に答える
195

より現代的な構文:

git diff ..master path/to/file

二重ドットのプレフィックスは、「現在の作業ディレクトリから」を意味します。次のように言うこともできます。

  • master..、つまり上記の逆です。これは と同じmasterです。
  • mybranch..master現在の作業ツリー以外の状態を明示的に参照しています。
  • v2.0.1..master、つまり、タグを参照します。
  • [refspec]..[refspec]、基本的に Git に対するコード状態として識別可能なもの。
于 2015-06-25T00:41:48.240 に答える
38

2 つの異なるブランチのファイルを比較するには、さまざまな方法があります。

  • オプション 1:特定のブランチのファイルを別の特定のブランチと比較する場合:

    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
    

    この例では、実際のブランチのファイルと master ブランチのファイルを比較しています。

于 2018-04-04T13:34:58.033 に答える
18

現在のブランチに対して差分を作成したい場合は、それをコミットして使用できます。

git diff $BRANCH -- path/to/file

このようにして、現在のブランチから参照されたブランチ ( $BRANCH) への差分が作成されます。

于 2019-02-14T18:55:41.987 に答える
5

dahlbyk の回答に同意します。コード レビュー用に差分を差分ファイルに書き込む場合は、次のコマンドを使用します。

git diff branch master -- filepath/filename.extension > filename.diff --cached
于 2017-10-06T07:19:54.987 に答える
0

Git Bashで 2 つのファイルを比較するには、次のコマンドを使用する必要があります。

git diff <Branch name>..master -- Filename.extension

このコマンドは、Bash 自体の 2 つのファイルの違いを表示します。

于 2018-01-17T04:26:07.563 に答える