名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

Gitでの競合解消にP4Mergeを使う

gitでの競合解決(コンフリクト解決)に役立ちます。

使う機会がありましたので、手順などをメモ。

紹介ページ(英語しかないです)

www.perforce.com

インストールページ(英語しかないです)

https://www.perforce.com/downloads/helix#product-10

OSを選択して、ダウンロードをポチッと押すだけ。もし見失ったらページ内をP4Mergeで検索して下さい。

ダウンロードを押すとRegistrationしてください、みたいなポップアップが出ますが、下の方にSkip Registrationみたいなものがあるので、そこ押せば登録しなくても済みます。

dmgを実行して、Mのアイコンになっているものだけをインストールする。

f:id:kawasumi_yume:20161231015256p:plain

実際の画面

f:id:kawasumi_yume:20161231021455p:plain

黄色がブランチが分かれる前のソースコード、青が今のブランチのコミットのソースコード、緑がマージしようとしたコミットのソースコードになります。それぞれ同じ行を編集してコンフリクトしています。

f:id:kawasumi_yume:20161231021619p:plain

ちょっとわかりにくいかもしれませんが、右下の方に出ている記号をクリックすることによってどのコミットのコードを使うかを選ぶことが出来ます。今回はマージしようとしたコミットのブランチのコードを取り込んでいます。

これでセーブしてやれば競合解決、ってわけですね。

SourceTreeの外部ツールに設定して起動させる

SourceTreeから起動させる例をほとんど聞かなかったので一応メモしておきます。

SourceTreeの設定でdiff -> 差分表示ツール、マージツールの設定をP4Mergeに変更してあげればOKです。

f:id:kawasumi_yume:20161231021819p:plain

これでコンフリクトしたファイルに対して、右クリックから競合の解決 -> 外部マージツールの起動、でP4Merge立ち上がります。

P4Mergeの欠点

最後にP4Mergeの欠点について少しお話します。

デフォルトの状態ですと、ファイルの競合を解決している際に一時ファイルが複数できてSourceTreeでみると未コミットのファイルが増えて見えます。パット見探しづらくなるので、1つのファイルづつ作業しましょう。 ( そもそも複数ファイルが大漁にコンフリクトするようであれば、それはそれでマージするタイミング自体に問題があるような気がしますが。 )

また、マージが終わってP4Mergeを閉じたあとですが、コンフリクトした状態のオリジナルのファイルをバックアップで自動的に作ってくれます。

コレはありがたいのかもしれませんが、誤ってgitとかにあげてしまうと少し邪魔かもしれませんので、くれぐれもコミットのときは全部適当にあげちゃうことのないように…。


設定でなんとかなるのかもしれないので、またわかったら追記しますね。


少しでも皆様のgitライフが快適になれば幸いです。