1. ホーム
  2. ギット

[解決済み】"git diff "を実行したときに、サイドバイサイドのdiffを取得するにはどうすればよいですか?

2022-04-30 22:38:06

質問

git diff" と入力したときに、"diff -y" のように横に並べて表示したり、"kdiff3" のように対話型の diff ツールで表示したりしたいのです。どうすればよいのでしょうか?

どのように解決するのですか?

Git には diff の内部実装がありますが、代わりに外部ツールをセットアップすることもできます。

外部の差分ツールを指定する方法は2種類あります。

  1. を設定します。 GIT_EXTERNAL_DIFFGIT_DIFF_OPTS 環境変数を指定します。
  2. 外部差分ツールの設定 git config

ymattw の答えも、かなりすっきりしています。 ydiff

こちらもご覧ください。

を行う場合 git diff は、上記の環境変数の設定とその .gitconfig ファイルを作成します。

デフォルトでは、Gitは以下の7つの引数をdiffプログラムに渡します。

path  old-file  old-hex old-mode  new-file  new-hex new-mode

通常、old-fileとnew-fileの2つのパラメータだけが必要です。もちろん、ほとんどの diff ツールでは引数としてふたつのファイル名を受け取るだけです。つまり、小さなラッパー・スクリプトを書いて、Git がスクリプトに提供する引数を受け取り、あなたが選んだ外部の git プログラムに渡す必要があるのです。

例えば、ラッパー・スクリプトを ~/scripts/my_diff.sh :

#!/bin/bash
# un-comment one diff tool you'd like to use

# side-by-side diff with custom options:
# /usr/bin/sdiff -w200 -l "$2" "$5" 

# using kdiff3 as the side-by-side diff:
# /usr/bin/kdiff3 "$2" "$5"

# using Meld 
/usr/bin/meld "$2" "$5"

# using VIM
# /usr/bin/vim -d "$2" "$5"

で、そのスクリプトを実行可能にする必要があります。

chmod a+x ~/scripts/my_diff.sh

の場合は、独自の diff ラッパースクリプトをどこでどのように見つけるかを Git に伝える必要があります。 その方法は三通りあります。(私は .gitconfig ファイルを編集するのが好きです)

  1. 使用方法 GIT_EXTERNAL_DIFF , GIT_DIFF_OPTS

    例えば、.bashrc や .bash_profile ファイルで設定することができます。

     GIT_EXTERNAL_DIFF=$HOME/scripts/my_diff.sh
     export GIT_EXTERNAL_DIFF
    
    
  2. 使用方法 git config

    git config" を使用して、ラッパーのスクリプトがどこにあるのかを定義します。

     git config --global diff.external ~/scripts/my_diff.sh
    
    
  3. を編集します。 ~/.gitconfig ファイル

    を編集することができます。 ~/.gitconfig ファイルに以下の行を追加してください。

     [diff]
       external = ~/scripts/my_diff.sh
    
    

カスタムの diff ツールをインストールするのと同様に、カスタムの merge-tool をインストールすることもできます。(progit.orgのページを参照してください)

ご覧ください。 http://fredpalma.com/518/visual-diff-and-merge-tool/ https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration