标签: diffmerge

如何使用我喜欢的diff工具/查看器查看'git diff'输出?

当我输入时git diff,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?

git diff diffmerge difftool git-difftool

735
推荐指数
17
解决办法
42万
查看次数

如何使用msysgit/gitk设置DiffMerge?

我刚刚开始使用Git而且我可能错过了一些明显的东西,但是这里有:

  • 我在Windows XP上使用msysgit 1.6.2.2
  • 在安装时,我选择了选项1"仅使用Git Bash"

我正在尝试整理一个包装脚本,我可以使用它来用DiffMerge替换内置的git diff.基于SO 上的这个线程,我创建了以下批处理文件:

@echo off
REM ---- Switch forward slashes to back slashes ----
set oldW=%2
set oldW=%oldW:/=\%
set newW=%5
set newW=%newW:/=\%

REM ---- Launch DiffMerge ----
"C:/Programs/SourceGear/DiffMerge/DiffMerge.exe" /title1="Old Version" %oldW% /title2="New Version" %newW%
Run Code Online (Sandbox Code Playgroud)

我将bat文件放在%GIT_INSTALL%/ cmd下并编辑了我的.gitconfig文件,如下所示:

[diff]
external = C:/Programs/git/cmd/git-diff-wrapper.bat
Run Code Online (Sandbox Code Playgroud)

如果我启动Git Bash并执行git diff HEAD HEAD~ - myfile

我收到一条消息File (\dev\null) not found- 鉴于我在Windows上并不奇怪.

按下,我启动了gitk,在Edit> Preferences下,我选择了相同的包装脚本.尝试特定文件的"外部差异"选项会产生神秘的错误消息Unknown Option "

很明显,我不知道我在做什么,所以任何帮助都会非常感激.

git windows-xp diffmerge msysgit

21
推荐指数
3
解决办法
2万
查看次数

如何让DiffMerge配置为在Windows 7或Windows 2012上使用Git?

所以,我已经看到了有关获取DiffMerge是几个问题mergetool,并difftool为饭桶.从本质上讲,它归结为你的PATH和一个.gitconfig看起来像的DiffMerge(sgdm.exe):

[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
Run Code Online (Sandbox Code Playgroud)

当我跑步时git difftool file1 file2,没有任何反应.没有错误代码,也没有启动DiffMerge.从Git Bash和Windows命令行,我可以运行sgdm file1 file2并且出现DiffMerge.

我已经修改了cmd.gitconfig不具有路径或扩展名(如sgdm只),但仍无济于事.

有没有遇到过这个?有什么明显的东西我不见了吗?我觉得我错过了一些明显的东西.

git diffmerge

11
推荐指数
3
解决办法
8392
查看次数

如何将SourceGear DiffMerge设置为Visual Studio的差异/合并工具?

我使用TFS进行源代码控制,但我想使用SourceGear DiffMerge来查看文件差异并进行合并.我找到了工具 - >选项 - >源代码控制 - > Visual Studio Team Foundation Server - >配置用户工具对话框,但设置合并参数非常混乱.这些参数应该是什么?

在此输入图像描述

tfs diffmerge visual-studio-2012

11
推荐指数
3
解决办法
8604
查看次数

使用带有diffmerge的git,没有提示,也没有别名

在OSX上,我使用diffmerge作为我的git diffing工具.这是我的.gitconfig:

[diff]
        tool = diffmerge
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[alias]
        d = difftool --no-prompt
Run Code Online (Sandbox Code Playgroud)

如果我只是使用git difftool它会提示我我想要的每个文件.为了解决这个问题,我创建了git d别名并添加了--no-prompt标志.

有没有办法可以防止重复提示没有别名?我尝试插入prompt=falseprompt = NO在difftool下,以及移动diffmerge命令旁边的--no-prompt标志,但这些都没有帮助.

git diffmerge git-config

9
推荐指数
1
解决办法
3733
查看次数

OS X上的git + DiffMerge问题

我已使用以下说明将Sourcegear DiffMerge配置为我的默认git合并工具:

git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "diffmerge \"\$LOCAL\" \"\$REMOTE\""

git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd "diffmerge --merge --result=\"\$MERGED\"
\"\$LOCAL\" \"\$BASE\" \"\$REMOTE\""
git config --global mergetool.diffmerge.trustexitcode false
Run Code Online (Sandbox Code Playgroud)

资料来源:http://www.andrejkoelewijn.com/wp/2010/01/08/configure-diffmerge-with-git/

但是,当我运行时,git mergetool我收到以下错误:

DiffMerge错误

这个问题可能是什么原因?

git macos diffmerge

8
推荐指数
1
解决办法
3131
查看次数

Git difftool没有启动外部DiffMerge程序

我一直在关注,在"方向由Dave博客条目在这个环节" 答案是我在Windows 7和做使用SourceGear的DiffMerge工具.我已将git\cmd目录添加到我的PATH系统变量并将我的git-diff-diffmerge-wrapper.sh文件放在那里:

#!/bin/sh
"C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe" "$1" "$2" | cat
Run Code Online (Sandbox Code Playgroud)

(是的,这是DiffMerge的正确路径.)

我已经编辑了我的.gitconfig文件以包含diffdifftool块(我直接从帖子中复制了行,他确实留在了注释掉的#external行.我把它添加到我文件的末尾;那可以吗?)

[diff]
    # external = git-diff-wrapper.sh
    tool = diffmerge
[difftool "diffmerge"]
    cmd = git-diff-diffmerge-wrapper.sh "$LOCAL" "$REMOTE"
Run Code Online (Sandbox Code Playgroud)

所以我git bash去做,git difftool HEAD~ 67b8679 -- js/site/pizzabuilder.js然后点击进入.什么都没发生.如果我这样做git difftool HEAD~ 67b8679,留下我想要的文件,我得到这个:

Viewing: 'js/angular/hutlovers/hutlovers.js'
Launch 'diffmerge' [Y/n]: Y
C:\Program Files (x86)\Git/libexec/git-core/mergetools/defaults: line 17: git-diff-diffmerge-wrapper.sh: command not found

Viewing: 'js/angular/localization/StoreListCtrl.js'
Launch 'diffmerge' [Y/n]: n

Viewing: …
Run Code Online (Sandbox Code Playgroud)

windows git bash diffmerge

7
推荐指数
2
解决办法
9515
查看次数

如何使diffmerge与Mercurial进行三向合并?

我目前正在使用命令hg diffmerge -r 32 -r 30 myfile,但这只显示两个窗口,而不是三个窗口.如何让它进行三向合并?

.hgrc

[ui]
merge=diffmerge

[extensions]
collapse=~/.hgext/collapse.py
hgext.purge=
hgext.extdiff=
hgext.graphlog=

[extdiff]
cmd.diffmerge=/usr/bin/diffmerge

[merge-tools]
diffmerge.executable=/usr/bin/diffmerge
diffmerge.args= --result=$output -t1="Local Version" -t2=$output -t3="Other Version" --caption=$output $local $base $other
diffmerge.binary=False
diffmerge.symlinks=False
diffmerge.gui=True
diffmerge.premerge=True 
Run Code Online (Sandbox Code Playgroud)

mercurial diffmerge

5
推荐指数
1
解决办法
1293
查看次数

在 Mojave 中打开 DiffMerge SnailSVN 的问题

第一个消息对话框错误是:

\n\n
\n

Difftool 想要访问 \xe2\x80\x9c~/Library/Application/Scripts/net.langui.SnailSVN.DiffTool

\n
\n\n

单击“授权”按钮后,第二个消息对话框是:

\n\n
\n

无法将 difftool.sh 安装到脚本目录!
\n 消息 \xe2\x80\x93 \xe2\x80\x9cdifftool.sh\xe2\x80\x9d 无法复制\xe2\x80\x99,因为您\xe2\x80\x99t 无权访问 \xe2\x80\ x9cnet.langui.SnailSVN.DiffTool

\n
\n

svn macos diffmerge

5
推荐指数
1
解决办法
3814
查看次数

Sourcetree无法打开Diffmerge进行合并冲突

最近,我重新安装了macOS。我已经安装了Sourctree和diffmerge并将diffmerge设置为默认合并工具。出于某种原因,每次我选择“解决冲突->打开外部合并工具”时,sourcetree都会打开其等待视图并直接将其关闭。

我在sourcetree中的设置页面:

在此处输入图片说明

这是当sourcetree为我配置diff合并时我的根.gitconfig的样子:

[core]
    excludesfile = /Users/[username]/.gitignore_global
[user] 
    name = ---- -----
    email = -----@-----.--
[commit]
    template = /Users/[username]/.stCommitMsg
[credential]
    helper =  !/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -Ddebug=false -Djava.net.useSystemProxies=true -jar /usr/local/Cellar/git-credential-manager/2.0.4/libexec/git-credential-manager-2.0.4.jar

[difftool "DiffMerge"]
[mergetool "DiffMerge"]
[diff]
    tool = diffmerge
[difftool "diffmerge"]
    cmd = /usr/local/bin/diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = diffmerge
[mergetool "diffmerge"]
    trustExitCode = true
    cmd = /usr/local/bin/diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
[difftool "sourcetree"]
    cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge/Contents/MacOS/DiffMerge --nosplash \"$LOCAL\" \"$REMOTE\"
path = 
[mergetool "sourcetree"]
    cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge/Contents/MacOS/DiffMerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
    trustExitCode …
Run Code Online (Sandbox Code Playgroud)

diffmerge atlassian-sourcetree

4
推荐指数
1
解决办法
1282
查看次数

将diffmerge设置为可视Git difftool不起作用

我试图在Git中将DiffMerge配置为我的difftool,但没有运气.这是我的.gitconfig文件的一个重要部分(未显示的其他设置仅适用于用户).

[diff]
        tool = diffmerge
[difftool "diffmerge"]
        cmd = \"C:\\Program Files\\SourceGear\\Common\\DiffMerge\\sgdm.exe\" \"$LOCAL\" \"$REMOTE\"
Run Code Online (Sandbox Code Playgroud)

每当我git difftool从powershell命令行调用时,冲突都会直接显示在powershell界面的下方,而不是按预期在diffmerge中显示.我知道git会选择设置,因为当我检查全局配置时,我会从配置文件中获取设置:

git config --global --get-all difftool.diffmerge.cmd
"C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe" "$LOCAL" "$REMOTE"
Run Code Online (Sandbox Code Playgroud)

我正在运行powershell而不是git bash.这是因为我为windows安装了github,它提供了powershell作为git的shell,所以我不需要安装bash(还).Git版本是1.7.11.msysgit.0.

git powershell diffmerge git-config github-for-windows

3
推荐指数
1
解决办法
3625
查看次数