Gitに最適なビジュアルマージツールは何ですか?[閉まっている]


599

Gitでマージを表示および編集するための最良のツールは何ですか?「鉱山」、「彼ら」、「祖先」が別々のパネルにあり、4番目の「出力」パネルがある、3方向のマージビューを取得したいと思います。

また、上記のツールを呼び出すための手順もすばらしいでしょう。(エラーが発生しないようにkdiff3を起動する方法はまだわかりません。)

私のOSはUbuntuです。


15
「しかし、現在は許可されていません」そう、それで私は最近、スタックオーバーフローが嫌いです。それはそれらの質問なしであまりにも乾燥して退屈です。
イシュトUjj-Mészáros

17
このタイプの質問が許可されているstackexchangeサイトはありますか?そうでない場合、...があるはず
fzzylogic

16
そのような質問が許可される新しいスタックオーバーフローの時が来たようです。明らかに多くの人がそのような質問を述べているので、非常に多くの人々にとってそれらを閉じることは愚かです。あなたは官僚制で理事会を通過したと思います。どのようにこの問題で世論調査を行い、あなたの「顧客」が欲しいものを見る程度; P
ピョートルOwsiak


6
問題:専門家はここにいるのではなく、ここにいるため、softwarerecsは役に立たない。
reinierpost 2017年

回答:


337

Meldは無料のオープンソースのクロスプラットフォーム(UNIX / Linux、OSX、Windows)差分/マージツールです。

インストール方法は次のとおりです。


53
誰が元の作者が使用しているOSに関心があるのか​​、という質問は、それを探しているすべての人が興味を持つほど一般的です。また、3方向差分とは、実際に4つのペインにテストが表示されている場合です。merge-base / local / remote / result
Evgeny

16
meldは複雑なdiffで面倒です。などのオプションを選択できることchose b for all unresolved conflictsは、のすべてのハンクに対して正しい矢印をクリックする必要があるよりもはるかに優れていますmeld。また、入力ファイルを適切に編集するのではなく、特定の出力ファイルにマージできることは、失敗したナージをバックアウトするために非常に重要です。
マークブース

3
@naxa MeldにWindowsインストーラーが追加
Roman

6
kdiff3では4つのビューを表示できますが、meldでは3つのビューしか許可されません。Meldは実際のマージツールではありません。ベースバージョンのビューが表示されないため、差分ツールです。
山本明

4
特にマージの場合、メルドはひどいです。「競合しない変更を自動転送」するオプションはないため、すべてのマージはひどく苦痛です。
セリン

91

""で使用する独自のマージツールを構成できますgit mergetool

例:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

そして、その間に、「git difftool」のdifftoolとして設定することもできます。

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

Unix / Linuxでは$BASE、シェルによって変数として解析されないようにする必要があることに注意してください。これは〜/ .gitconfigファイルに実際に表示され、機能します。


10
p4mergeは(現在)公式にサポートされているgit mergetoolsの1つであるため、ツールをいじる必要はないはずです。.cmd変数はもうありません。
マットボール

2
正しい引用符を使用していることを確認してください:stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck 2016年

64

私のお気に入りの Beyond Compare 3は、 Proエディションにマージ機能があります。マージの良い点は、ベース、レフト、ライト、マージされた結果の4つのビューすべてを表示できることです。P4Vよりやや視覚的ではありませんが、WinDiffよりははるかに優れています。これは、多くのソース管理と統合し、Windows / Linux上で動作します。高度なルール、エディション、手動配置などの多くの機能があります...

Perforce Visual ClientP4Vは、マージのための最も明示的なインターフェースの1つを提供する無料のツールです(いくつかのスクリーンショットを参照)。すべての主要なプラットフォームで動作します。そのツールの私の主な失望は、その種の「読み取り専用」インターフェースです。ファイルを手動で編集したり、手動で位置合わせしたりすることはできません。

PS:P4MergeはP4Vに含まれています。PERFORCEは、クライアントなしでツールを入手することを少し難しくしようとしています。

SourceGear Diff / Mergeは、私の2番目の無料のツール選択になるかもしれません。スクリーンショットのマージを確認してください。少なくとも3つのビューがあることがわかります。


メルドは私がすることを好むだろうと新しい無料のツールです SourceGearの差分/マージ:今、それはまた、ネイティブのようないくつかのソース管理支援の明確な利点を持つほとんどのプラットフォーム(Windowsの/ Linuxの/ Mac用)に取り組んだのGitを。したがって、すべてのファイルの履歴の差分をはるかに簡単にすることができます。SourceGear Diff / Mergeと同様に、マージビュー(スクリーンショットを参照)には3つのペインしかありません。これにより、複雑なケースではマージが多少難しくなります。

PS:1つのツールが5つのビューのマージをサポートしている場合、これは本当に素晴らしいことです。なぜなら、Gitでコミットをチェリーピックすると、ベースは1つではなく2つになるためです。2つのベース、2つの変更、および1つの結果のマージ。


7
Perforce Mergeは素晴らしいです。それは本当に役立つ4つのペインのマージツールを備えています:Yours、Theirs、Common Base、New
Gal


5
残りのperforceなしでP4Mergeのみをカスタムインストールできます。
Dirk Bester

6
p4mergeの最新バージョンには、「読み取り専用」インターフェースがありません。下のペインで、マージされたファイルを編集できます。
Ian Ni-Lewis

1
これは本当に素晴らしい答えと議論です。共有してくれてありがとう!
マークグッド

45

kdiff3について良いことを聞いています。


4
+1:kdiff3はmeldよりはるかに優れており、gitでもネイティブにサポートされています。
マークブース

3
kdiff3はるかに多くの機能がmeldありますが、UIは優れています。私の意見でmeldは、によって提供される機能でmeld十分な簡単なマージに適しています。diffuseも試すことを忘れないでください。
ミッコランタライネン2013

kdiff3では4つのビューを表示できますが、meldでは3つのビューしか許可されません。Meldは実際のマージツールではありません。ベースバージョンのビューが表示されないため、差分ツールです。
山本明

43

私のお気に入りのビジュアルマージツールはSourceGear DiffMergeです

  • これは無料。
  • クロスプラットフォーム(Windows、OS X、およびLinux)。
  • きれいなビジュアルUI
  • 期待するすべてのdiff機能(Diff、Merge、Folder Diff)。
  • コマンドラインインターフェース。
  • 使用可能なキーボードショートカット。

ユーザーインターフェース


3
どのようにそれをgitで動作するように構成しますか?
ライアンランディ


2
紹介してくれてありがとう!:Dこのツールはクリーンで、meldよりもインストールと操作にかかる時間が短縮されました。私はmeldをインストールするのに30時間費やします。でもこれは5分でした!!
om39a 2014年

2
注:diffmergeには3者間マージ機能がないようです。その理由で数週間試してみたが、放棄している
StormeHawke 2014年

それは素晴らしいツールであり、フォルダを比較することもできます。問題は少し遅い(MacBookPro 15 2014、MacOS Catalina)
emKaroly

33

Vimdiff

vimを学んだら(そしてIMHOを学べば)、vimdiffは、学ぶべきもう1つの美しい小さな直交概念です。vimでオンラインヘルプを取得するには:

:help vimdiff 

この質問はそれを使用する方法をカバーしています:vimdiffを使用して競合を解決する方法

ここに画像の説明を入力してください

マウス使用の暗い時代に行き詰まっており、マージするファイルがあまり大きくない場合は、meldをお勧めします。


<3 vimdiff、svnを「マージ」ツールとして使用するように説得する方法がわかりません。
klokop

gvimdiffもこの目的に適しています。
new123456 2011

2
Fugitiveプラグインを使用すると、さらに簡単になります。 vimcasts.org/episodes/...
エリックWestrup

ローカル/ベースとベース/リモートの違いを明確に確認する方法があった場合のみです。
Ciro Santilli郝海东冠状病六四事件法轮功

24

P4Mergeを試すことができます。

P4Mergeを使用してファイルバージョン間の違いを視覚化します。カラーコーディングを使用して、並行開発または同時開発から生じる競合を解決します。

機能は次のとおりです。

  • テキストファイルの違いを強調表示して編集する
  • 行末または空白を含めるか無視するかを選択します
  • Windows(CRLF)、Mac(CR)、Unix(LF)の行末規則を認識する
  • コマンドラインパラメータを使用し、Perforce以外のアプリケーションから起動する
  • ファイルを比較およびマージするときに行番号を表示する
  • 変更、一意、または変更されていないファイルを除外する
  • 名前または拡張子でファイルをフィルタリングする
  • 変更されたアセットを使い慣れたファイル/フォルダー階層で整理する
  • JPEG、GIF、TIFF、BMP、およびその他のファイル形式を比較する
  • Qt APIを使用して拡張する
  • 画像の重ね合わせまたは並べて表示
  • オーバーレイ画像の違いを強調する

これまでに見た中で最高のもの。3方向ビューのリストから変更を選択することで、競合を簡単に解決します
チョービィ2015



今日それを使い始め、それはかなり直感的です。
リソース

22

IntelliJ IDEAには、Resolveマジックワンドを備えた洗練されたマージ競合解決ツールがあり、マージを大幅に簡素化します。

ソース:https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/


2
Ideaのマージツールは素晴らしいものです。これは、Ideaのコミュニティエディションでも利用できます。つまり、高度なマージツールとして無料で使用できます。これは私がやっていることです(ほとんどの場合、私はVSCodeを使用していて、私はタフなマージケースにIdeaを使用しています)。VSCodeもかなりうまく機能し、時にはIdeaよりも優れています。しかし、厳しいケースでは、3パネルレイアウトが今まで見た中で最高のツールです
godblessstrawberry '10 / 10/19

スクロールバーの「ファイルサマーリー」が一緒になっていないのが嫌いです。私が拡散が好きな主な理由!
アンソニー

16

拡散は私のお気に入りですが、もちろん私は偏っています。:-)それは非常に使いやすいです:

$ diffuse "mine" "output" "theirs"

Diffuseは、Pythonで記述された小さくシンプルなテキストマージツールです。Diffuseを使用すると、コードへの変更を簡単にマージ、編集、および確認できます。拡散はフリーソフトウェアです。


2
私は拡散が本当に好きで、偏見はありません。
jturcotte 2009

2
@デリックモーザー:diffuseとても素敵に見えます。私は今それを試してみただけで、それよりも差分が良くなりましたkdiff3。しかし、私はそれを使用しようとしています、git mergetoolそしてそれは互いに隣り合って4つのファイルを開きます(ローカル、マージ結果、リモート、ベース)、そして私の画面はそのために十分に広くありません。横スクロールが多かったです。kdiff3は、互いに隣り合っている3つと、ウィンドウの下半分に結果を表示するだけです。
yairchu

diffuseには、meldと比較していくつかのマージオプションがあります(どちらか一方を選択するのではなく、両方のバージョンを結合できます)。
Audrius Meskauskas

GVSリポジトリとCVSリポジトリを使用して、gitマージの競合をマージすることで、2つのフォルダーを比較するために、Windowsでそのまま使用できます。拡散差分ファイルは、単一のウィンドウのタブで開きます。私は拡散に切り替えました(emacsのediffを使用した後(機能が多すぎる、90年代に便利)> vimdiff(複雑なプラグインのキーストローク)> p4merge> araxis(独自仕様)> meld(遅すぎる)、tkdiff(cvsのみ)> kdiff3(良い、良い正規表現無視機能)> winmerge(良い)>拡散(高速、ポータブル、期待どおりに動作))初めて拡散を試しました。
モッシュ2018

DiffuseでGUI言語を変更する方法は?
zach


9

git mergetool -t=<tool>またはを渡すことで、git mergetoolで使用するツールを変更できます--tool=<tool>。(vimdiffから)デフォルトを変更するには、を使用しますgit config merge.tool <tool>



6

したがって、gitマージでは、次のことを試すことができます。

  • DiffMergeは、Windows、OS X、およびLinuxでファイルを視覚的に比較およびマージします。

    DiffMerge

  • Meldは、視覚的な差分およびマージツールです。

    Meldは、視覚的な差分およびマージツールです。

  • 2つまたは3つのテキスト入力ファイル/ディレクトリを比較またはマージするKDiff3(差分およびマージプログラム)。
  • opendiff(macOSのXcode Toolsの一部)、ターミナルからFileMergeアプリケーションを起動して、マージを含むファイルまたはディレクトリをグラフィカルに比較するコマンドラインユーティリティ。

2
git config --global merge.tool opendiff私にとって最も効果的だった
James Matthew Mudgett

5

私はここで言及されている多くのツールを試しましたが、どれも私が探しているものではありません。

個人的には、Atomは違いと競合の解決/マージを視覚化するための優れたツールであることがわかりました。

マージに関しては、3つのビューはありませんが、すべてが1つのバージョンに結合され、バージョンごとに色付きで強調表示されます。コードを直接編集するか、必要なスニペットのバージョンを使用するボタンがあります。

gitで作業するためだけに、エディターやIDEとして使用することはもうありません。UIがすっきりとしていて、非常に単純明快で、高度にカスタマイズ可能です。

  • コマンドラインから起動して、開きたい単一のファイルを渡すか、プロジェクトフォルダーを追加できます(git repo)。

    • また、ツリービューをいっぱいにすることなくプロジェクト間を移動する非常に便利な方法として、project-managerをお勧めします。
  • 私が持っていた唯一の問題は更新です-大規模なリポジトリで作業しているとき、アトムはそれ以外で行った変更を更新するのに時間がかかる場合があります。終了したら常に閉じて、変更/コミットを表示したいときに再び開きます。ctrl + shift + f5を使用してウィンドウをリロードすることもできます。これは1秒しかかかりません。

もちろん無料です。


3

マージと比較にさまざまなツールを使用します。

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

拳は次のように呼び出すことができます:

git difftool [BRANCH] -- [FILE or DIR]

を使用すると、2番目が呼び出されますgit mergetool



2

Visual Studioを使用する場合、チームエクスプローラーの組み込みツールは、Gitマージの競合を解決するための非常に優れたツールです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.