2255

しばらく離れていた 2 つのブランチをマージしたいのですが、どのファイルが変更されたかを知りたいと思っていました。

このリンクに出くわしました: http://linux.yyz.us/git-howto.html非常に便利でした。

私が遭遇したブランチを比較するツールは次のとおりです。

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

2 つのブランチ間で異なるファイルのみを表示する「git status master..branch」のようなものがあるかどうか疑問に思っていました。

新しいツールを作成せずに、これが今できる最も近い方法だと思います (もちろん、ファイルが複数回変更された場合は繰り返し表示されます)。

  • git diff master..branch | grep "^diff"

何か見落としがあるかな…と思いました。

4

18 に答える 18

2770

現在のブランチとmainブランチを比較するには:

$ git diff --name-status main

任意の 2 つのブランチを比較するには:

$ git diff --name-status firstbranch..yourBranchName

公式ドキュメント(具体的git diffにはオプション) には、さらに多くのオプションがあります。--name-status

于 2009-05-05T01:04:38.473 に答える
432

試す

$ git diff --stat --color master..branchName

これにより、同じ数の行を使用しながら、各変更に関する詳細情報が得られます。

他の方法でマージする場合は、ブランチを反転して違いをより明確に把握することもできます。

$ git diff --stat --color branchName..master
于 2011-02-09T19:38:06.003 に答える
171

また、git には安価で簡単な分岐機能があることにも注意してください。マージに問題があると思われる場合は、マージ用のブランチを作成します。したがって、masterマージしたい変更がありba、マスターからのコードが必要なブランチである場合、次のようにします。

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

最終結果は、自分のブランチを台無しにする前に、使い捨てのブランチでマージを試す必要があったということです。自分が絡まってしまったら、ba-mergeブランチを削除して最初からやり直すことができます。

于 2012-10-11T01:22:19.643 に答える
59

誰かが 2 つのブランチから差分ファイルを生成しようとしている場合:

git diff master..otherbranch > myDiffFile.diff
于 2013-04-03T14:01:39.227 に答える
45

GUIベースの方法もあります。

gitkを使用できます。

  1. 走る:

    $ gitk --all
    
  2. ブランチのコミットを右クリックし、ポップアップ メニューで[このコミットをマーク] を選択します。

  3. 別のブランチのコミットを右クリックし、Diff this -> Marked commitまたはDiff Marked commit -> thisを選択します。

次に、変更されたファイルのリストが右下のパネルに表示され、差分の詳細が左下のパネルに表示されます。

于 2013-06-14T06:01:20.873 に答える
28

git を使用すると、マージを試してみて、結果が気に入らない場合は問題を回避することが簡単にできることに注意してください。潜在的な問題を事前に探すよりも簡単かもしれません。

于 2009-05-05T00:59:54.333 に答える
19

特定のファイル間でのみ変更を探している場合は、次のようにします。

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 はオプションです。branch1 が指定されていない場合、現在のブランチ (現在のブランチ) がデフォルトで考慮されます。例えば:

git diff master -- controller/index.js
于 2016-05-16T13:13:15.930 に答える
15

共同で作業する場合、または一度に複数の機能を使用する場合、アップストリームまたはマスターにさえ、ブランチに含まれていない作業が含まれていることが一般的であり、基本的な差分に誤って表示されます。

アップストリームが移動した可能性がある場合は、次のようにする必要があります。

git fetch
git diff origin/master...

git diff master を使用するだけで、関連する変更が含まれる場合と含まれない場合があります。

于 2015-03-24T03:21:32.840 に答える
11

IntelliJ IDEAを使用している場合は、任意のブランチを現在の作業ブランチと比較することもできます。詳細については、 http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827を参照してください。これは無料版でも利用できます。

于 2013-06-06T07:17:35.150 に答える
8

2つのブランチがあります

  • A(所属する支部)
  • B (比較したい別のブランチ)

ブランチAにいるので、入力できます

git diff --color B

次に、これにより次の出力が得られます

ここに画像の説明を入力

これについて重要な点は、

  1. 緑色のテキストはブランチ A に存在する内部です

  2. 赤字のテキストはブランチ B に存在します

于 2016-10-04T11:56:48.420 に答える