ロゴテキスト ロゴ

    Gitのdiffの表示をより分かりやすく!diff-highlightを有効にする

    Gitのdiffの表示をより分かりやすく!diff-highlightを有効にする

    gitのdiffをより見やすく出来るdiff-highlight



    一般的なdiffに対し

    一般的なdiff

    diff-highlightを有効にすると

    diff-highlight有効時のdiff

    のように文字単位で違いを表示してくれるようになります!



    GitHubも同じように表示してくれますね

    GitHubも同様にdiff-highlightのような表示がされる

    検証した環境

    1 git 2.33.0
    2 brew 3.2.13 3.3.1だった場合も記載しました

    git-diffを使ってdiffを分かりやすく表示する

    git-diffはgitコマンドに同梱されています

    そのため、特別なインストールは不要。


    gitconfigへの設定

    gitコマンド使用時に使えるようにするため.gitconfigへ設定を追加します。


    gitコマンド・.gitconfigの直接編集、どちらでも大丈夫です

    $ git config --global pager.log "diff-highlight | less"
    $ git config --global pager.show "diff-highlight | less"
    $ git config --global pager.diff "diff-highlight | less"
    ~/.gitconfig
    [pager]
        log = diff-highlight | less
        show = diff-highlight | less
        diff = diff-highlight | less

    command not foundへの対応

    上記の設定を行った後だと「 diff-highlightなんてないよ」と怒られます

    $ git diff package.json
    diff-highlight | less: diff-highlight: command not found


    diff-highlightは/contrib/diff-highlightというフォルダ内に存在していて、

    github上だと以下のページ

    git/contrib/diff-highlight at master · git/git


    ここへのパスを通して上げる必要があります。



    MacのHomebrew(ここでの私のバージョンは3.2.13でgitを追加している場合、

    diff-highlightへのパスは以下になります。

    /usr/local/share/git-core/contrib/diff-highlight/diff-highlight

    Homebrewのバージョンが3.3.1でM1 Macの場合、gitのパスは以下になっていました。

    /opt/homebrew/share/git-core/contrib/diff-highlight/diff-highlight



    このコマンドがあるかを確認する場合はopenコマンド使ってFinderに表示すると分かりやすいですね

    # diff-highlightコマンドが格納されているフォルダをFinderで開く
    $ open /usr/local/share/git-core/contrib/diff-highlight/
     
    # brew v3.3.1でM1 Macの場合
    $ open /opt/homebrew/share/git-core/contrib/diff-highlight/
    diff-highlightが存在しているかの確認


    パスの通し方は

    • シンボリックリンクを使う
    • zshなどのshにパスを通す

    があります。

    お好きな方どちらかを実行して下さい!



    シンボリックリンク

    diff-highlightコマンドを一般的にパスが通っている/usr/local/binにシンボリックリンクを貼ります。

    $ ln -s /usr/local/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin
     
    # brew v3.3.1でM1 Macの場合
    $ ln -s /opt/homebrew/share/git-core/contrib/diff-highlight/diff-highlight /usr/local/bin

    手軽に試したい場合はこちらが楽ですね



    shにパスを通す

    私はhomesickというライブラリを使って複数のMacでdotfileを共有しているのでこちらの方法にしました。


    zshであれば.zshrc、bashであれば.bashrcに記載していきます

    export PATH="$PATH:/usr/local/share/git-core/contrib/diff-highlight"
     
    # brew v3.3.1でM1 Macの場合
    export PATH="$PATH:/opt/homebrew/share/git-core/contrib/diff-highlight"



    パスが通った事の確認

    diff-highlight--help--versionが実行しても反応しないので、

    シンプルに変更があるリポジトリフォルダでgit diffするのが早いです。

    diff-highlight有効時のdiff

    正常にパスが通っていれば「command not found」が表示されなくなり、

    diff実行時の色が変わっています。


    tigでもdiff-highlightを有効にする

    tigのdiffでもdiff-highlightを有効にすることができます


    設定は簡単で.tigrcに以下の1文を記載すればOKです

    ~/.tigrc
    set diff-highlight = true

    tigでもdiff-highlightを有効にする
    プロフィールの背景画像 プロフィール画像
    Yuki Takara
    都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。