前回の[ローカル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 を使うための設定
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の設定に書き込んでおきました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[merge] tool = WinMerge [mergetool] prompt = false keepBackup = false [mergetooltool "WinMerge"] cmd = 'C:/Program Files/WinMerge/WinMergeU.exe' -e \"$MERGED\" trustExitCode = false [diff] tool = WinMerge [difftool] prompt = false [difftool "WinMerge"] cmd = 'C:/Program Files/WinMerge/WinMergeU.exe' -e -r -u -x -wl -wr -dl \"a/$MERGED\" -dr \"b/$MERGED\" \"$LOCAL\" \"$REMOTE\" trustExitCode = false |
マージ作業時にWinMergeで表示される順番を変えたいのだが、
WinMerge起動オプションで順番変えても表示順に反映されないのはなぜ?
コメント