しおメモ

雑多な技術系ブログです。ニッチな内容が多いです。

VSCodeの3-way mergeをgitのmergetoolとして利用する

1年ほど前にgitのmergetoolvimdiffからvscodeの3-wayに乗り換えて馴染んできたので、設定方法のメモと布教です。

設定方法

メインのエディタでVSCodeを使っていて、git操作もその中で完結している場合は、VSCode自体の設定でgit.mergeEditortrueにするだけで良いです。
一方で、IDE勢でgit操作だけターミナルを使うような場合は、git configから設定する必要があります。

git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait --new-window --merge $LOCAL $REMOTE $BASE $MERGED'

.gitconfigではこのようになります。

[merge]
    tool = vscode
[mergetool "vscode"]
    cmd = code --wait --new-window --merge $LOCAL $REMOTE $BASE $MERGED

簡単な解説を付け加えると、--wait(-w)オプションがVSCodeで該当のファイルが閉じられるまでシェル側で待つ、--new-window(-n)オプションが新しくウィンドウを作成するというものです。

git mergetoolでVSCodeの新しいウィンドウが開き、閉じると次のファイルに移ります。

所感

3-way merge editorは不評だったようで、一時期デフォルトだったものの、外されてしまいました。

github.com

操作は]cやら1doやらを打たずに、"Accept xxx"や、"x Conflict Remaining"をポチポチ押すだけなので、普段あまりvimを使わない場合はこちらの方が直感的で楽に感じました。

scior.hatenablog.com