1. ホーム
  2. git

[解決済み] SourceTree / gitのコンフリクトを対話的に(視覚的に)解決する方法

2022-03-05 11:58:38

質問

gitプロジェクトに(Windows)SourceTreeを使っています。私は、コマンドプロンプトまたはLinuxターミナルのいずれかでそれを行うことができます。

しかし、コンフリクトを対話的に、かつ視覚的に解決するいい方法はないものかと考えています。例えば、pullがコンフリクトを検出したら、GUIベースのコンフリクトツール(例:P4Merge)をポップアップ表示させるとか。それは可能ですか?

いつも手作業でコンフリクト解消しているので、苦痛でしかない。

これは、例えば、git pull のメッセージを、SourceTreeから取得します。

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.

解決方法は?

SourceTreeから、Tools->Optionsをクリックします。 そして、"General"タブで、SourceTreeがGit設定ファイルを変更することを許可するボックスにチェックが入っていることを確認します。

次に、quot;Diff" タブに切り替えます。 下半分のドロップダウンで、差分とマージを行うために使用する外部プログラムを選択します。 私は、以下のものをインストールしました。 KDiff3 で、十分気に入っています。 完了したら、OKをクリックします。

これで、マージがあったときに、「アクション」->「コンフリクトの解決」->「外部マージツールの起動」を実行できます。