プロクラシスト

みんなのProcrastination(先延ばし、回り道)を少しでも有意義に。

MENU

【diffmerge】Gitのコンフリクト解消に便利なツール

皆さんこんにちは!ほけきよです。

今回はGitをより便利に使えるようにする強力なツールを紹介します。

git diffmergeツール

gitの便利な機能の一つが、差分を見れること。git diff HEAD^ HEADと叩けば最新コミットとの差分を見れますね。これをもっと見やすくしたい!という方は必見です。

また、gitを複数人で使っていると、たまにあるのが、変更の衝突です。 修正が結構面倒なんですよねー。

これも同様に効率よく修正できるツールがdiffmergeです

f:id:imslotter:20161017234737p:plain

差分が見やすくなります。また、マージ時の衝突を効率よく解消できるため、導入しておいて損はありません!

※今回はWindows環境で導入しましたが、Mac, Linux環境でも同様に使えます!

setup

[diff]
    tool = diffmerge
[difftool "diffmerge"]
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"

[merge]
    tool = diffmerge
[mergetool "diffmerge"]
    trustExitCode = true
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
  • git global config –list でdiffmergeがちゃんと機能しているかどうかチェック
    • diff.toolとmerge.toolというコマンドが設定されている
    • errorが出るようなら、何かがおかしい。環境と違うものをコピペしたとか、改行があるとか。

使ってみる

  • git diff
    • 普通のdiff

f:id:imslotter:20161017234209p:plain

  • git difftool
    • windowが開く
    • ここで、日本語だとエラーが出ることがある、こういうときはencodingをUTF-8にする

f:id:imslotter:20161017234230p:plain

  • どこが変わったかが一目瞭然。右が変更後
  • また、この画面(右側)で編集することも可能。すごい!

f:id:imslotter:20161017234355p:plain

  • git mergeでコンフリクトした時
  • git mergetoolで、差分を動的に見ながらコンフリクトの解消ができる。

まとめ

diffmergeツールを使うと

変更前/後を左右に表示してくれるので、とても見やすい

ウィンドウ上でそのままファイルの変更も可能

マージ時のコンフリクトもウィンドウ上で修正できる

インタラクティブにウィンドウ上で使えるツールはとても便利ですよね!皆さんも是非使ってみてください。

ではではっ!

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)