git:GUIでのみ視覚的な違い(融合)を使用します。

git:GUIでのみ視覚的な違い(融合)を使用します。

次のように外部diffコマンドを指定できることがわかりますgit diff

[diff]
    external = 

ただし、(Xなしで)コンソールにログインすると、視覚的比較はディスプレイを開くことができないため失敗します(明らかに)。

GUI / Xにログインしたときに視覚的な違いのみを使用するようにgitにどのように指示しますか?

答え1

これを行うにはいくつかの簡単な方法があります... gitの外でこれを行うには、difftoolプログラム(ビジュアルdiffを起動するにはdiffの代わりにdifftoolが必要な場合があります)をラッパースクリプトに設定して、現在の状態かどうかを判断します。グラフィカル環境を作成し、適切なプログラムを起動するか、git "内部"で環境固有の条件付きインクルード(includeIf)を実行できます。

答え2

あなたが要求したので、an answer drawing from credible and/or official sourcesこの答えに公式文書を引用します。

X まず、セッション内で実行されていることを確認する方法を見つける必要があります。たとえば、$DISPLAY 変数が設定されていることを確認してこれを実行できます。説明通りman X

展示する

これは唯一の必須環境変数です。 Xサーバーを指す必要があります。上記の「表示名」セクションを参照してください。

DISPLAYしかし、誰かが外部で誤った値を設定する可能性があるため、これはおそらく良い考えではありません X。より良いアプローチが提案される。この回答:

if xhost >& /dev/null ; then echo "Display exists"
else echo "Display invalid" ; fi

コンピュータに呼ばれるプログラムがすでにインストールされている必要がありますxhost。そのプログラムがあることを確認してください。

$ type -a xhost
xhost is /usr/bin/xhost

diff.externalこれで、内部にある場合は外部diffを呼び出すラッパーを指すように設定でき、X内部にない場合はデフォルトのメカニズムを実行するように設定できます。残念ながら、デフォルトを実行する簡単な方法が見つからないので、一時的に使用するエイリアスを作成しましょう。記載されているように:git diffXgit diffdiff.externalgitdiff.external-cman git

-c <名前>=<値>

構成パラメーターをコマンドに渡します。指定された値は、構成ファイルの値よりも優先されます。予想される形式は、git config(ドットで区切られたサブキー)にリストされているものと同じです。

git -c foo.bar ...から=を省略し、foo.barをブール真の値に設定できます(設定ファイルの[foo]barと同様)。等しいが含まれますが、null値(例:git -c foo.bar = ...)を使用すると、foo.barは空の文字列に設定されます。

次のようになります。

$ git -c diff.external=diff-wrapper.sh ...

要約する:

  • というスクリプトを作成し、必要なものに置き換え~/git-wrapper.shます。<YOUR_DIFF_WRAPPER>

    #!/usr/bin/env sh
    
    if xhost >/dev/null 2>&1
    then
        git -c diff.external=<YOUR_DIFF_WRAPPER>  "$@"
    else
        git "$@"
    fi
    
  • 実行可能ビットを設定します。

     $ chmod +x ~/git-wrapper.sh
    
  • たとえば、シェル起動ファイルにエイリアスを設定し~/.bashrcてシェルを再ロードするには、次の手順を実行します。

     alias git=~/git-wrapper.sh
    
  • 一般的な使用git:

     $ git diff
    

    <YOUR_DIFF_WRAPPER>X内部にある場合はそれを使用し、デフォルトの外部を使用します。git-diffX

関連情報