12

そのため、DiffMerge をgitのmergetoolandにすることに関するいくつかの質問を見てきました。基本的には、次のようなdifftoolDiffMerge (sgdm.exe)PATHと aを使用することになります。.gitconfig

[diff]
    tool = DiffMerge
[difftool "DiffMerge"]
    cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' "$LOCAL" "$REMOTE"
[merge]
    tool = DiffMerge
[mergetool "DiffMerge"]
    cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' -merge -result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode = true
    keepBackup = false

を実行git difftool file1 file2しても何も起こりません。エラー コードも、DiffMerge の起動もありません。Git Bash と Windows コマンド ラインから実行するsgdm file1 file2と、DiffMerge が起動します。

パスまたは拡張子を持たないように を変更しcmdましたが(たとえば、のみ)、それでも役に立ちません。.gitconfigsgdm

誰かがこれに遭遇しましたか?私が見逃している明らかなことがいくつかありますか?明らかな何かが欠けているように感じます。

4

6 に答える 6

13

.gitconfigSourceGearDiffMergeを使用するための私のものは次のとおりです。

[mergetool "diffmerge"]
cmd = \"C:\\program files\\sourcegear\\common\\diffmerge\\sgdm.exe\" --merge --result=$MERGED $LOCAL $BASE $REMOTE

(明らかに、裏返し$LOCAL$REMOTE、反対側でそれらを好む場合。)

于 2012-12-13T20:55:14.120 に答える
8

以下は私のために働いた-

git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd 'C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe "$LOCAL" "$REMOTE"'
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.trustExitCode true
git config --global mergetool.diffmerge.cmd 'C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"'
于 2018-04-18T14:48:01.850 に答える
5

これはかなり長い間私にとってうまくいきました。(Windows 7、Git の最新バージョン。)

sgdm.exe が環境パスにあることを確認してください。

[diff]
    tool = sgdm
[difftool "diffmerge"]
    cmd = sgdm $LOCAL $REMOTE
[merge]
    tool = sgdm
[mergetool "diffmerge"]
    cmd = sgdm --merge --result=$MERGED $LOCAL $BASE $REMOTE
    trustexitcode = false
[difftool "sgdm"]
    cmd = sgdm $LOCAL $REMOTE
[mergetool "sgdm"]
    trustexitcode = false
    cmd = sgdm --merge --result=$MERGED $LOCAL $MERGED $REMOTE --title1=Mine --title2='Merged: $MERGED' --title3=Theirs
于 2013-03-20T19:34:13.020 に答える
2

これは私のために働いた:

C:\> git config --global diff.tool diffmerge
C:\> git config --global difftool.diffmerge.cmd
    "C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe
        \"$LOCAL\" \"$REMOTE\""

C:\> git config --global merge.tool diffmerge
C:\> git config --global mergetool.diffmerge.trustExitCode true
C:\> git config --global mergetool.diffmerge.cmd 
    "C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe
        /merge /result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\""
于 2014-02-25T10:36:19.120 に答える
0

他の誰もしなかったときに、これは私のためにそれをしました:

[core]
    autocrlf = false
[user]
    email = XYZ
    name = ABC
[merge]
    tool = diffmerge
[mergetool "diffmerge"]
    trustExitCode = true
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe --merge --result=$MERGED $LOCAL $BASE $REMOTE
[mergetool]
    keepBackup = false
[difftool "diffmerge"]
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[diff]
    tool = diffmerge
[push]
    default = matching
于 2014-10-31T15:32:42.793 に答える
0

この構成は、Git 1.7.9 および Windows 7 64 ビットで機能します。私の出発点は、Pro Git ブックhttp://git-scm.com/book/en/Customizing-Git-Git-Configurationです。Windows と Mac の変更点は、a) diff の場合、/ を \\ に置き換え、スペースを含むパスを引用符で囲むだけです。b) マージの場合、パラメーターはあなたのものと同じですが、引用符が付いています。したがって:

.gitconfig

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

PATH にある 2 つのスクリプト ファイル

extMerge

#!/bin/sh
"C:\\Program Files\\SourceGear\\Common\\DiffMerge\\sgdm.exe" "-merge" "-result=$4" "$2" "$1" "$3"

extDiff

#!/bin/sh
[ $# -eq 7 ] && "C:\\Program Files\\SourceGear\\Common\\DiffMerge\\sgdm.exe" "$2" "$5"
于 2013-01-30T13:30:05.687 に答える