3

Git 構成ページのドキュメントに従っており、これを Windows 7 環境に適用しようとしています。「git diff file0」と言うと、P4Merge でエラーが発生します。

Errors: '/tmp/cH9ccM_file0' is (or points to) an invalid file.

これは真実です。「/tmp」というディレクトリがありません。C:\tmp、C:\cygwin\tmp、および %PROGRAMFILES%\Git\tmp をチェックインしました。

このディレクトリを私が持っているものに変更する方法についてのアイデアはありますか?

編集:

追加情報。最終的には、WinMerge (または任意の外部プログラム) を機能させようとしています。WinMerge を動作させることができなかったため、以前は P4Merge を使用することにしました。そのため、前述の記事で使用されたプログラムを使用することにしました。

以下は、私の .gitconfig の関連部分です。

[merge]
tool = extMerge
[mergetool "extMerge"]
cmd = extMerge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = false
[diff]
external = extDiff

extDiff スクリプト:

#!/usr/bin/sh
# extDiff
# Wrapper for using an external diff tool in Git
echo "File 1: $2"
echo "File 2: $5"
/usr/local/bin/extMerge "$2" "$5"

extMerge スクリプト:

#!/usr/bin/sh
echo $*
/c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe $*

したがって、index.html というファイルを変更して git diff を実行すると、次のようになります。

File 1: /tmp/XfGpOC_index.html
File 2: index.html
4

3 に答える 3

8

Cygwin を使用していると思います... Cygwin の場合は /tmp が存在するのに、Windows の場合は存在しない (別の場所にある) ことが問題だと思います。私の場合、Cygwin の /tmp は $HOME/AppData/cygwin/tmp にあり、そこにファイルがありました。これは、Cygwin のインストール方法によって異なる場合があります。Cygwin の /tmp を見つけたら、適切な環境変数を見つける (または、必要に応じて新しい環境変数を作成する) だけで、一時ファイルへの Windows パスを取得できます。これは私のために働いた:

[diff]
   tool = p4mergeTool
[difftool "p4mergeTool"]
   cmd = p4merge.exe $HOMEPATH/AppData/cygwin$LOCAL $REMOTE

HOMEPATH は Windows HOME 環境変数 (\Users\myusername) であり、HOME は cygwin HOME 環境変数 (/cygdrive/c/Users/myusername) であるため、HOME の代わりに HOMEPATH を使用しました。Cygwin から printenv と入力して、適切な環境変数を確認します。

于 2013-12-11T03:58:09.283 に答える