2つのリビジョン間で変更されたファイルの表示
-
03-07-2019 - |
質問
しばらく分離された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つのブランチからdiffファイルを生成しようとしている場合:
git diff master..otherbranch > myDiffFile.diff
GUIベースのメソッドもあります。
gitk を使用できます。
-
実行:
$ gitk --all
-
ブランチのコミットを右クリックし、ポップアップメニューで[このコミットをマーク]を選択します。
- 別のブランチのコミットを右クリックして、 Diff this->を選択します。マークされたコミットまたはマークされたコミットの違い->これ。
次に、右下のパネルに変更されたファイルのリストがあり、左下のパネルに差分の詳細があります。
もう1つのオプション。この場合はmeldを使用します。
git difftool -d master otherbranch
これにより、ファイル間の違いを確認できるだけでなく、特定のファイルを簡単にポイントしてクリックすることができます。
gitを使用すると、結果が気に入らない場合にマージを簡単に試すことができ、問題を回避できます。潜在的な問題を事前に探すよりも簡単かもしれません。
また、特定のファイル間でのみ変更を探している場合:
git diff branch1 branch2 -- myfile1.js myfile2.js
branch1はオプションであり、branch1が提供されない場合、現在のブランチ(現在のブランチ)がデフォルトで考慮されます。 例:
git diff master -- controller/index.js
共同で作業する場合、または複数の機能を同時に使用する場合、上流またはマスターでさえ、ブランチに含まれていない作業が含まれており、基本的な差分に誤って表示されることがよくあります。
アップストリームが移動した可能性がある場合、これを行う必要があります:
git fetch
git diff origin/master...
git diff masterを使用するだけで、関連する変更を含めることができます。または含めない場合があります。
IntelliJ IDEA を使用している場合、任意のブランチを現在の作業ブランチと比較することもできます。 http://www.jetbrains.com/をご覧ください。詳細についてはidea / webhelp / merging-deleting-and-comparing-branches.html#d288093e3827 をご覧ください。これは、無料版でも利用できます。
ここにはたくさんの答えがありますが、よく使うものを追加したいと思いました。比較したいブランチのいずれかにいる場合は、通常、次のいずれかを実行します。この答えのために、私たちはセカンダリブランチにいると言います。その時点で必要なビューに応じて、どちらを選択するかによって異なりますが、ほとんどの場合、この2つのうち2番目のオプションを使用しています。最初のオプションは、元のコピーに戻そうとする場合に便利です。どちらにしても、両方とも仕事をやり遂げます!
これはmasterを現在のブランチ(セカンダリ)と比較し、元のコードは追加された行になり、新しいコードは削除された行と見なされます
git diff ..master
または
これにより、masterと現在のブランチ(セカンダリ)が比較され、元のコードが古い行になり、新しいコードが新しい行になります
git diff master..
GUIが好きでWindowsを使用している場合、ここに簡単な方法があります。
- WinMergeをダウンロード
- 2つのブランチを異なるフォルダーにチェックアウトします
- WinMergeを使用して、フォルダーごとの比較を行います。ブランチの1つが作業中のブランチである場合、簡単に変更を加えることもできます。
git diff revision_n revision_m
revision_n
と revision_m
が連続したコミットである場合、次と同じ出力
git show revision_m
GUIソリューションを探している人のために、 Git Cola には" Branch Diff Viewer( Diff -> Branches .. )。
視覚的な差分 も使用できます。
たとえば、 Sourcetree を使用している場合、単純にログビューで任意の2つのコミットを選択。
(私はこのためにほとんどの場合GUIを使用することを個人的に好み、GUIオプションに慣れていないかもしれない人のためにこれを投稿しています。)
たとえば、 TortoiseGit を使用して、変更されたファイルのブランチを簡単に比較することもできます。 [ 参照を参照 ]をクリックして、比較するブランチを選択します。
たとえば、あなたのブランチをマスターと比較すると、マスターで変更されるファイルの結果リストが得られますあなたの支店をマスターにマージすることにしました。
master を your-branch と your-branch を master と比較すると、異なる結果になることを忘れないでください em>。