私はしばらくの間分離されていて、どのファイルが変更されたかを知りたがっていた2つのブランチをマージしたいです。
このリンクに出くわした: http://linux.yyz.us/git-howto.html とても役に立ちました。
私が遭遇したブランチを比較するためのツールは以下のとおりです。
git diff master..branch
git log master..branch
git shortlog master..branch
「git status master..branch」のように、2つのブランチ間で異なるファイルのみを表示するようなものがあるかどうか疑問に思いました。
新しいツールを作成しなくても、これが現在できる最も近い方法だと思います(もちろん、ファイルが複数回変更された場合は繰り返し表示されます)。
git diff master..branch | grep "^diff"
私が逃した何かがあるかどうか疑問に思いました...
現在のブランチをmaster
ブランチと比較するには:
$ git diff --name-status master
任意の2つの分岐を比較するには
$ git diff --name-status firstbranch..yourBranchName
公式ドキュメント でgit diff
を読んでください。
やってみる
$ git diff --stat --color master..branchName
それでも同じ数の行を使用しながら、各変更についてより多くの情報を得ることができます。
別の方法でマージする場合は、分岐を反転して違いをより明確に把握することもできます。
$ git diff --stat --color branchName..master
また、gitは安くて簡単に分岐できることにも注意してください。マージに問題があると思われる場合は、マージ用のブランチを作成します。 master
にマージしたい変更があり、ba
がmasterからのコードを必要とする私のブランチであるなら、私は以下をするかもしれません:
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
ブランチを削除して最初からやり直すことができます。
誰かが2つのブランチから差分ファイルを生成しようとしているなら:
git diff master..otherbranch > myDiffFile.diff
GUIベースの方法もあります。
gitk を使うことができます。
実行します。
$ gitk --all
ブランチのコミットを右クリックして、ポップアップメニューのMark this commitを選択します。
それから右下パネルに変更されたファイルリストがあり、左下パネルに差分の詳細があります。
もう1つの選択肢、この場合はmeldを使用します。
git difftool -d master otherbranch
これにより、ファイル間の違いを確認できるだけでなく、特定のファイルをポイントしてクリックする簡単な方法も提供されます。
Gitを使えば、マージを試してみて、結果が気に入らない場合は、問題を回避することが簡単にできます。事前に潜在的な問題を探すよりも簡単かもしれません。
共同作業をしたり、一度に複数の機能を使ったりするとき、上流やマスターにさえブランチに含まれていない作業が含まれていることがよくあります。
上流が移動した可能性がある場合は、これを実行する必要があります。
git fetch
git diff Origin/master...
Git diff masterを使用するだけで、関連する変更が含まれたり、含まれなかったりする可能性があります。
あなたが特定のファイルの間でのみ変更を探しているなら、そしてそれから:
git diff branch1 branch2 -- myfile1.js myfile2.js
branch1はオプションであり、branch1が指定されていない場合、現在のブランチ(あなたが現在いるブランチ)がデフォルトで考慮されます。例えば:
git diff master -- controller/index.js
IntelliJ IDEA を使用している場合は、任意のブランチを現在作業中のブランチと比較することもできます。詳細については、 http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 を参照してください。これは free edition でも利用できます。
ここにはたくさんの答えがありますが、私がよく使うものを追加したいと思いました。あなたがあなたが比較したいブランチのうちの1つにいるならば、私は通常以下のうちの1つをします。この答えのために私達は私達が私達の二次ブランチにいると言うでしょう。その時点で必要なビューに応じて、どちらを選択するかによって異なりますが、ほとんどの場合、2つのうちの2番目のオプションを使用します。あなたがオリジナルのコピーに戻ろうとしているなら、最初のオプションは便利かもしれません - どちらの方法でも、両方とも仕事をやり遂げます!
これはmasterと私たちがいるブランチ(secondary)とを比較し、元のコードが追加された行になり、新しいコードが削除された行と見なされます。
git diff ..master
OR
これはまたmasterと私たちがいるブランチ(secondary)とを比較し、元のコードは古い行になり、新しいコードは新しい行になります。
git diff master..
git diff revision_n revision_m
revision_n
とrevision_m
が連続したコミットである場合、git show revision_m
と同じように出力されます。
GUIが好きでWindowsを使用している場合は、これが簡単な方法です。
visual diffを使用することもできます。
たとえば、 Sourcetree を使用している場合、単純に ログビューで任意の2つのコミットを選択 にできます。
(個人的には、このためにほとんどの場合GUIを使用することを好みます。GUIオプションに慣れていないかもしれない人のためにこれを投稿しています。)
GUIソリューションを探している人のために、 Git Cola にはとても素敵な "Branch Diff Viewer"があります( Diff - > Branches .. )。