最近、私は水銀(まだ便利で論理的だと思う)からgitに「ジャンプ」しました。なぜなら、私が興味を持っているプロジェクトの大半はgitを使用しており、githubでホストされているからです。 この点で、ツールの備蓄を改訂するという問題、特に視覚的な比較とマージ(diffとmerge)のためのツールの選択に関する問題が生じました。 ハブの情報不足を補うために、このミニレビューを書くことにしました。 彼らが言うように-熱い追求で。
カットの下には、DiffMergeおよびWinMerge for Windowsで使用するGit設定の例もあります。 多くの人が時間を節約すると思います。
役職 | 特徴 | プラットフォーム |
キフ3http://kdiff3.sourceforge.net/ [ スクリーンショット ] | このツールは、gitユーザーとMercurialシステムのユーザーの両方が遭遇する可能性が最も高いですが、2、3行は問題ありません。
長所 :
短所 :
注: TortoiseHgでインストールします。 | Windows、Mac OS X、Linux |
拡散http://www.sourcegear.com/diffmerge/index.html [ スクリーンショット ] | 長所 :
短所 :
| Windows、Mac OS X、Linux |
ウィンマージhttp://www.winmerge.org http://ru.wikipedia.org/wiki/Winmerge [ スクリーンショット ] | 長所 :
短所 :
注 :私はずっと前に(mercurialとgitを使い始める前でさえ)このツールを使い始めました。ほとんどの場合、マージツールが両面であるという事実は特に不便なことはありません。 | 窓 |
溶けるhttp://meld.sourceforge.net/ [ スクリーンショット ] | 長所 :
短所 :
| Windows、Mac OS X、Linux
Windowsのインストール手順: https://live.gnome.org/Meld/Windows |
拡散http://diffuse.sourceforge.net/ [ スクリーンショット ] | 長所 :
短所 :
注 :WindowsでGit Bashを使用してgit mergetoolコマンドを使用してマージすると、4番目の「追加」ウィンドウが開きます。 config cを調整することで削除できます:/ Git / libexec / git-core / mergetools / diffuse | Windows、Mac OS X、Linux
注 :Windowsにインストールする場合、既にすべての依存関係(Meldとは異なります)、つまりPythonとPyGTKパッケージが含まれています。 |
TKDiffhttp://sourceforge.net/projects/tkdiff/ [ スクリーンショット ] | 長所 :
短所 :
| Windows、Mac OS X、Linux
|
スマートシンクロナイズhttp://www.syntevo.com/smartsynchronize/index.html [ スクリーンショット ] | 長所 :
短所 :
注 :SmartySynctonizeは、Gitを操作するための便利なGUIツールであるSmartGitに組み込まれています(非営利目的でも無料)。 | Windows、Mac OS X、Linux |
比較を超えてhttp://www.scootersoftware.com/ http://en.wikipedia.org/wiki/Beyond_Compare [ スクリーンショット ] | 長所 :
短所 :
| Windows Linux |
Araxis mergehttp://www.araxis.com/merge/ [ スクリーンショット ] | 長所 :
短所 :
注 :コメントでは、多くの人がこのツールを高く評価し、助言していますが、コストは高くなります。 | Windows Mac OS X |
原則として、リストされているツールはすべてうまく機能しており、このレビューは議論のテーマではありません。 誰もが味わう楽器を選択します。
以下は、DiffMergeおよびWinMergeを操作するためのGit設定の例です。 同様に、Gitと他のツールとの相互作用を構成できます。
GitとDiffMerge
1)ディレクトリc:/ Git / libexec / git-core / mergetools /に追加します
次のようなdiffmergeファイル:
diff_cmd () { "c:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" \ "$LOCAL" "$REMOTE" >/dev/null 2>&1 } merge_cmd () { "c:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" \ --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE" >/dev/null 2>&1 status=$? }
2)ファイルc:/Users/swipe/.gitconfigに追加します
次の行:
[diff] tool = diffmerge [merge] tool = diffmerge [mergetool "diffmerge"] cmd = "diffmerge" trustExitCode = true
3)競合を作成し、DiffMergeを呼び出して解決します
git init // readme.txt git add . // git commit -m "empty readme" // git branch new // git checkout new // readme.txt git add . // git commit -m "new string" // git checkout master // master readme.txt git add . // git commit -m "master string" // git hist --all //
git difftool master new //
git merge new // new master
マージの競合に関するメッセージが表示されますが、これが求められています。
git mergetool //
中央のウィンドウで、ファイルを目的の状態にし、変更を保存します。
競合が解決しました。
DiffMegreは、ここで設定をスパイしました。
http://twobitlabs.com/2011/08/install-diffmerge-git-mac-os-x/
GitとWinMerge
1)ディレクトリc:/ Git / libexec / git-core / mergetools /に追加します
次のようにwinmergeファイル:
diff_cmd () { "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$LOCAL" "$REMOTE" >/dev/null 2>&1 } merge_cmd () { "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$PWD/$LOCAL" "$PWD/$REMOTE" "$PWD/$MERGED" >/dev/null 2>&1 status=$? }
Gitが変更を自動的にマージできない場合、マージの競合が発生し、マージトークンが競合するファイルに追加されます(<<<<<<<、=======、および>>>>>>>)。 これらは、サードパーティのツールを使用して競合を解決するために必要です。
上記の例のマスターブランチと新しいブランチをマージした結果として形成されるreadme.txtファイルを考えます 。
<<<<<<< HEAD master str ======= new str >>>>>>> new
WinMergeを使用して競合ファイルを開き、競合を解決できます。
この後、双方向マージツールが開きます。
説明したロジックに基づいて、merge merge_cmdコマンドを次のように書き換えます。
merge_cmd () { "c:/Program Files (x86)/WinMerge/WinMergeU.exe" \ "$MERGED" >/dev/null 2>&1 status=$? }
実際、上記のオプションは両方とも同等です。
2) .gitconfigの編集
[diff] tool = winmerge [difftool "winmerge"] cmd = "winmerge" [merge] tool = winmerge [mergetool "winmerge"] cmd = "winmerge" trustExitCode = false keepBackup = false
最後の行は、リポジトリディレクトリへのバックアップファイルの保存をキャンセルします。
3)2つのブランチをマージするときに競合を作成しましょう(DiffMergeを使用した例を参照)。
git difftool master new //
ブランチをマージするときに競合を解決するには、次のコマンドを使用します
git mergetool
ファイルを編集しましょう。 変更を保存すると、競合は解決されます。
WinMergeの設定はここで見張られています:
http://stackoverflow.com/questions/636253/msys-git-merge-tool-command-options-issue