Gitの競合解決をWinMergeで出来るように設定する

前回の[ローカルGit]ブランチ分けしたものを統合する[merge]では競合したファイルを
テキストエディタ直接編集して競合解決しましたが、
正直わかりにくいし、修正なんていうほど楽ではないです。

今日は、差分表示とマージを手助けしてくれるツールを使ってみようと思います。

と、言うわけでConflict発生状態から開始します。

git mergetool(vimdiff?)

デフォルト?のマージツールですね。実行コマンドはこちら

コマンド 説明
git mergetool 標準?のマージツールを起動して、競合ファイル・競合箇所の表示

コマンド打つと上画像の状態になり、Enterキー押下で下画像のマージツールに変わります。

何でこんな色使い?
4つのウィンドウに分かれていましたが、操作・編集できるのは下半分のウィンドウのみ。
各ウィンドウの意味は下画像で合っている?

標準のVi操作の一部しかコマンドが分からないので、
テキスト直編集と変わらない…色使いが目に厳しい…良さがわからない…
↓のサイトにvimdiffのコマンドがありましたが、試していません。

Git の mergetool で vimdiff を指定して Vim でマージコンフリクトを解決してみた

mergetoolにWinMergeを使う

Vi/Vimはわかるものの日常使っていないので、たまに操作ミスります…

差分ツールとしても有名なWinMergeを使って、マージ解消できるように
ちょっと設定をしてみます。
※WinMergeのインストール(配置)は必須です。

下記参考サイト

NotePM:【2021年版】Diffツール (差分ツール) おすすめ12選!(Windows、macOSで無料)

Qiita:Windows の各種 Git 環境で diff / merge に WinMerge を使うための設定

note:Gitの設定をgit configで確認・変更

Git設定変更・確認からやっていきます。

コマンド 説明
git config <scope> <name> <value> Git設定の <name>の値を<value>へ変更する
<scope>–local、–global、 –systemを指定。省略すると –localとなる
git config <scope> -l Git設定の一覧を表示する
<scope>–local、–global、 –systemを指定。
git config <scope> -e Git設定ファイルをエディタで編集する。
<scope>–local、–global、 –systemを指定。省略すると –localとなる

ローカルの設定を変更してあげて…

マージツールを起動すると…

WinMergeで表示されました!

WinMergeで右側のファイルへのマージ作業を終えて、WinMergeを終了。
Git Bashへ戻ってくると…「Was the merge successful [y/n]?」と聞かれています。

“y”と入力してEnterキーを押すと、Conflict解決済としてマークされました。

 

設定はコマンドよりもテキストが楽

マージツールでWinMergeを使う設定をコマンドから実行してみましたが、
複数個の設定をする初期設定ではコマンドの優位性はほぼ無し。
設定ファイルを直接テキストエディタで編集(コピペ)が楽!とわかりました。

Gitの設定ファイルは(local、global、system)と3種類あり、
それぞれの設定ファイル場所は以下表

設定ファイル ファイルの場所
–local <ローカルリポジトリ>\.git 内
–global %homepath%
–system <git-bashインストールディレクトリ>\etc 内

コマンドでローカルに書き込んだmergetoolの設定と、difftoolの設定を合わせて
globalの設定に書き込んでおきました。

 

 

マージ作業時にWinMergeで表示される順番を変えたいのだが、
WinMerge起動オプションで順番変えても表示順に反映されないのはなぜ?

コメント