Linuxでの私のお気に入りのマージツールはMeldであり、Gitと連動するように使用または構成しても問題はありません。ただし、Windowsでは別の話でした。
まず、ここで見つけたバンドルからMeldをインストールしました: https://code.google.com/p/meld-installer/
次に、デフォルトのマージツールとしてMeldをサポートするように.gitconfigを設定しました
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
keepBackup = false
trustExitCode = false
したがって、競合が発生した場合、git difftoolを実行すると、Meldは実際に開きます。ただし、Gitがdiffツールに渡すために書き込むファイルへのパスは正しくありません。たとえば、Gitはリポジトリディレクトリ(私はgit mergetoolを呼び出した場所)にBASE、LOCAL、およびREMOTEファイルを生成しますが、Meldは実行可能ファイルのディレクトリでこれらの各ファイルを開こうとします。
Meldは、C:\ repo\roses.txt.LOCAL.2760.txtを開く代わりに、C:\ Program Files(x86)\ Meld\meld\roses.txt.LOCAL.2760.txtを開こうとします。
誰もこれに遭遇したことがありますか、Windowsで正しく動作するようにGit/Meldを設定する方法を知っていますか?
なぜWindows用のgit bashを使用しないのですか?
Meldを単純にインストールした後:
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" <- path to meld here
それで全部です!
Schuess、ディレクトリ内のスペース文字に注意してください!
[merge]
tool = meld
[mergetool "meld"]
Prompt = false
keepBackup = false
keepTemporaries = false
path = C:/Program Files (x86)/Meld/meld.exe
cmd = '\"/c/Program Files (x86)/Meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
私はまったく同じ問題を抱えていたので、それを機能させるために力ずくで強制する必要がありました。これが、私の.gitconfigファイルに入れたものです。 (私のmeld実行可能ファイルは別の場所にあることに注意してください)
[merge]
tool = meld
[mergetool "meld"]
cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED"
このページのmeldインストーラーのバグレポートで解決策を見つけました。
https://code.google.com/p/meld-installer/issues/detail?id=11
私が理解している限り、問題は、meld.exeプログラム(pythonインタープリターを介してmeldを実行)がコマンドの作業ディレクトリをmeld.exeの作業ディレクトリに不必要に設定することです。これにより相対パスが発生します。コマンドライン引数として渡されたときに誤って解釈される。
解決策は、AHK2EXe(AutoHotKeyスクリプト-> exe)を使用して、提供されたmeld.exeをmeld.ahkファイルをコンパイルして生成されたものに置き換えることです。そこにはいくつかのバージョンが投稿されているので、ページの一番下のスクリプトをダウンロードしてください。
次の2つのコマンドを使用できます( Aruginの言うとおり )-Meld.exeへの適切なパスを使用します。
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
または、単にC:\Users\YOUR_USER_NAME\.gitconfig
ファイルを直接追加し、その末尾に次を追加します。
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\Meld.exe
git difftool
Git Bash for WindowsおよびMeldで、デフォルトのdifftoolビューアーとして開きます。
私も同様の問題に直面しました。使用されているオペレーティングシステムはWindows 10であり、次の変更が私のために機能しました。それはパスの問題のようです
git config --global mergetool.meld.path "/c/Program Files (x86)/Meld/Meld.exe" <- path to meld here
何らかの理由で、Windows 10ではインストール中にPATH環境変数を適切に設定できなかったため、「C:\ Program Files(x86)/」の下にある.dllを見つけることができないという奇妙な例外が発生しますMeld/bin」ディレクトリ。
私の回避策は、git bashで実行することでした:
export PATH=$PATH:"/C/Program Files (x86)/Meld/lib"
または、Windows PATHに追加します
C:\Program Files (x86)/Meld/bin
答えはどれも私には役に立たなかった。私はこれで.gitconfig-fileを作成しました:
[merge]
tool = meld
[mergetool "meld"]
cmd = 'C:/Program Files (x86)/Meld/Meld.exe' $LOCAL $BASE $REMOTE --output=$MERGED
[mergetool]
Prompt = false
競合で終わるgit merge mybranch
の後、単にgit mergetool
と入力すると、meldが開きます。保存後、gitでコミットする必要があり、競合は解決されます。
何らかの理由で、これはMeld 3.18.xでのみ機能し、Meld 3.20.xでエラーが発生します。
上記のすべてを試した後、管理者として実行するようにMeldを設定してくれました。
Run this program as an administrator
チェックボックスを選択します受け取ったエラーは、c:\windows\temp\meld-*
などの一時ファイルを参照していましたが、作成されていませんでした。 Meldのアクセス許可を上げると、git difftool
とMeld内での手動実行の両方で機能するようになり、トリックを行うように見えます。