すでに、分散バージョン管理システム(
DVCS )、それらの比較、およびそれらのGUIクライアントの比較に関する多くの記事がありました。 gitとmercurialを操作するためのIDEプラグインについても議論されています。 しかし、視覚的な比較ツールとマージの競合の解決
に関する情報はほとんどあり
ませんでした 。
最近、私は水銀(まだ便利で論理的だと思う)からgitに「ジャンプ」しました。なぜなら、私が興味を持っているプロジェクトの大半はgitを使用しており、githubでホストされているからです。 この点で、ツールの備蓄を改訂するという問題、特に視覚的な比較とマージ(diffとmerge)の
ためのツールの
選択に関する問題が生じました。 ハブの情報不足を補うために、このミニレビューを書くことにしました。 彼らが言うように-熱い追求で。
カットの下には、DiffMergeおよびWinMerge for Windowsで使用するGit設定の例もあります。 多くの人が時間を節約すると思います。
原則として、リストされているツールはすべてうまく機能しており、このレビューは
議論のテーマではあり
ません。 誰もが味わう楽器を選択します。
以下は、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
git difftool master new
git merge new
マージの競合に関するメッセージが表示されますが、これが求められています。
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