265

最近は GitExtension 2.46 を使っていましたが、同じバージョンの Git は 1.9.4.msysgit.2 です。Git コマンドのみを使用したいので、GitExtension をアンインストールし、利用可能な最新バージョンのGitKDiff3をインストールしました。

マージを行って競合が発生した場合は、次のコマンドを実行します。

git mergetool

次に、メッセージを受け取ります。

マージ ツール kdiff3 は「kdiff3」としては利用できません。

KDiff3 パスにあるに違いないと思います。

環境

  • OS: Windows10
  • Git 2.6.1.windows.1
  • KDiff3 0.9.98 (64 ビット)

質問:

  • git mergetool競合するファイルのバージョンLOCALREMOTEBASE、およびMERGEDで KDiff3 GUI を開くコマンドの .gitconfig ファイルで何を構成する必要がありますか?

  • 差分ツールとして使用するように構成するにはどうすればよいですか?

4

8 に答える 8

441

これらのサイトは非常に役に立ちました。ほぼ、mergetooldifftoolです。グローバル構成を使用しましたが、リポジトリで問題なく使用できます。次のコマンドを実行するだけです。

git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/bin/kdiff3.exe"
git config --global mergetool.kdiff3.trustExitCode false

git config --global diff.guitool kdiff3
git config --global difftool.kdiff3.path "C:/Program Files/KDiff3/bin/kdiff3.exe"
git config --global difftool.kdiff3.trustExitCode false

最新バージョンの kdiff3 は、アプリケーション フォルダー C:/Program Files/KDiff3 のルートからアプリケーション フォルダー内の bin/ フォルダーに実行可能ファイルを移動したことに注意してください。古いバージョンを使用している場合は、上記のパスから「bin/」を削除してください。

オプションの使用は、trustExitCode差分ツールが戻ったときに何をしたいかによって異なります。ドキュメントから:

git-difftoolは、各ファイルで個別に差分ツールを呼び出します。デフォルトでは、差分ツールによって報告されたエラーは無視されます。--trust-exit-codeを使用して、呼び出された差分ツールがゼロ以外の終了コードを返したときにgit-difftoolを終了させます。

于 2015-10-26T14:56:01.020 に答える
12

問題は、Git が %PATH% で KDiff3 を見つけられないことです。

典型的な Unix インストールでは、すべての実行可能ファイルはいくつかのよく知られた場所 ( /bin//usr/bin//usr/local/bin/など) に存在し、シェル プロセッサにその名前を入力するだけでプログラムを呼び出すことができます (例cmd.exe: :) )。

kdiff3Microsoft Windows では、通常、プログラムは専用のパスにインストールされるため、単純にセッションを入力してcmdKDiff3 を実行することはできません。

難しい解決策: へのフル パスを指定して、KDiff3 の場所を Git に伝える必要がありますkdiff3.exe。残念ながら、Git は構成のパス指定にスペースが含まれていないので、最後にこれが必要になったときは、遅れたかのように古い「C:\Progra~1...\kdiff3.exe」になってしまいました。 1990年代:)

簡単な解決策: コンピューターの設定を編集し、%PATH% に kdiff3.exe のディレクトリを含めます。次に、その名前で cmd.exe から呼び出すことができるかどうかをテストし、Git を実行します。

于 2015-10-23T18:02:19.317 に答える
7

(WSL git から kdiff3 を使用する方法を見つけようとしたとき、私はここにたどり着き、最終的なピースを手に入れたので、その答えを見つけようとしているときにここでつまずいた人のために私の解決策を投稿します)

WSL git の差分/マージ ツールとして kdiff3 を使用する方法

Windows Update 1903 を使用すると、はるかに簡単になります。Windows 側は \wsl$ 経由で WSL ファイルシステムにアクセスできるようになったため、wslpath を使用するだけで、Windows から WSL に TMP を共有する必要はありません。

[merge]
    renormalize = true
    guitool = kdiff3
[diff]
    tool = kdiff3
[difftool]
    prompt = false
[difftool "kdiff3"]
    # Unix style paths must be converted to windows path style
    cmd = kdiff3.exe \"`wslpath -w $LOCAL`\" \"`wslpath -w $REMOTE`\"
    trustExitCode = false
[mergetool]
    keepBackup = false
    prompt = false
[mergetool "kdiff3"]
    path = kdiff3.exe
    trustExitCode = false

Windows Update 1903 以前

Windows 10 にインストールされている kdiff3 を WSL で git の diff/merge ツールとして使用する手順:

  1. kdiff3 インストール ディレクトリを Windows パスに追加します。
  2. TMP を WSLENV Windows 環境変数に追加します (WSLENV=TMP/up)。TMP dir は、ファイルの以前のリビジョンと同様に、一時ファイル用に git によって使用されるため、これが機能するにはパスが Windows ファイルシステム上にある必要があります。
  3. .bashrc で TMPDIR を TMP に設定します。
# If TMP is passed via WSLENV then use it as TMPDIR
[[ ! -z "$WSLENV" && ! -z "$TMP" ]] && export TMPDIR=$TMP
  1. kdiff3 を呼び出すときに unix-path を windows-path に変換します。私の .gitconfig のサンプル:
[merge]
    renormalize = true
    guitool = kdiff3
[diff]
    tool = kdiff3
[difftool]
    prompt = false
[difftool "kdiff3"]
    #path = kdiff3.exe
    # Unix style paths must be converted to windows path style by changing '/mnt/c/' or '/c/' to 'c:/'
    cmd = kdiff3.exe \"`echo $LOCAL | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\" \"`echo $REMOTE | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\"
    trustExitCode = false
[mergetool]
    keepBackup = false
    prompt = false
[mergetool "kdiff3"]
    path = kdiff3.exe
    trustExitCode = false
于 2019-04-14T20:10:19.487 に答える