gitでの競合解決(コンフリクト解決)に役立ちます。
使う機会がありましたので、手順などをメモ。
紹介ページ(英語しかないです)
インストールページ(英語しかないです)
https://www.perforce.com/downloads/helix#product-10
OSを選択して、ダウンロードをポチッと押すだけ。もし見失ったらページ内をP4Mergeで検索して下さい。
ダウンロードを押すとRegistrationしてください、みたいなポップアップが出ますが、下の方にSkip Registrationみたいなものがあるので、そこ押せば登録しなくても済みます。
dmgを実行して、Mのアイコンになっているものだけをインストールする。
実際の画面
黄色がブランチが分かれる前のソースコード、青が今のブランチのコミットのソースコード、緑がマージしようとしたコミットのソースコードになります。それぞれ同じ行を編集してコンフリクトしています。
ちょっとわかりにくいかもしれませんが、右下の方に出ている記号をクリックすることによってどのコミットのコードを使うかを選ぶことが出来ます。今回はマージしようとしたコミットのブランチのコードを取り込んでいます。
これでセーブしてやれば競合解決、ってわけですね。
SourceTreeの外部ツールに設定して起動させる
SourceTreeから起動させる例をほとんど聞かなかったので一応メモしておきます。
SourceTreeの設定でdiff -> 差分表示ツール、マージツールの設定をP4Mergeに変更してあげればOKです。
これでコンフリクトしたファイルに対して、右クリックから競合の解決 -> 外部マージツールの起動、でP4Merge立ち上がります。
P4Mergeの欠点
最後にP4Mergeの欠点について少しお話します。
デフォルトの状態ですと、ファイルの競合を解決している際に一時ファイルが複数できてSourceTreeでみると未コミットのファイルが増えて見えます。パット見探しづらくなるので、1つのファイルづつ作業しましょう。 ( そもそも複数ファイルが大漁にコンフリクトするようであれば、それはそれでマージするタイミング自体に問題があるような気がしますが。 )
また、マージが終わってP4Mergeを閉じたあとですが、コンフリクトした状態のオリジナルのファイルをバックアップで自動的に作ってくれます。
コレはありがたいのかもしれませんが、誤ってgitとかにあげてしまうと少し邪魔かもしれませんので、くれぐれもコミットのときは全部適当にあげちゃうことのないように…。
設定でなんとかなるのかもしれないので、またわかったら追記しますね。
少しでも皆様のgitライフが快適になれば幸いです。