首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不启动外部DiffMerge程序的Git扩散工具

不启动外部DiffMerge程序的Git扩散工具
EN

Stack Overflow用户
提问于 2014-06-12 21:58:16
回答 5查看 18.1K关注 0票数 12

当我在Windows7上运行时,我一直在遵循这个戴夫的博客条目中“回答”链接中的说明,并使用SourceGear的DiffMerge工具。我将git\cmd目录添加到PATH系统变量中,并将git-diff-diffmerge-wrapper.sh文件放在那里:

代码语言:javascript
复制
#!/bin/sh
"C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe" "$1" "$2" | cat

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

我已经编辑了我的.gitconfig文件以包含diffdifftool块(我直接从帖子中复制了行,而他确实离开了注释掉的#external行。我把这个加到文件末尾了,可以吗?)

代码语言:javascript
复制
[diff]
    # external = git-diff-wrapper.sh
    tool = diffmerge
[difftool "diffmerge"]
    cmd = git-diff-diffmerge-wrapper.sh "$LOCAL" "$REMOTE"

所以我去git bashgit difftool HEAD~ 67b8679 -- js/site/pizzabuilder.js然后点击enter。什么都没发生。如果我做了git difftool HEAD~ 67b8679,删除了我想要的文件,我会得到以下信息:

代码语言:javascript
复制
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: 'js/pizzahut/site/browser_version.js'
Launch 'diffmerge' [Y/n]: n

Viewing: 'js/pizzahut/site/dashboard.js'
Launch 'diffmerge' [Y/n]: n

对于提交之间不同的所有文件,它都会继续运行,但是它从不启动DiffMerge。我不知道如何解释错误;没有找到什么命令?difftool?我在git中运行1.7.11,difftool应该包含在git中,从版本1.6.3开始。

当我查看错误中引用的文件的第17行时,如下所示:

代码语言:javascript
复制
( eval $merge_tool_cmd )

作为这个区块的一部分:

代码语言:javascript
复制
diff_cmd () {
    merge_tool_cmd="$(get_merge_tool_cmd "$1")"
    if test -z "$merge_tool_cmd"
    then
        status=1
        break
    fi
    ( eval $merge_tool_cmd )
    status=$?
    return $status
}

有人能帮我吗?我是git的日常用户,但几乎不是超级用户,我对Windows脚本一无所知,所以在这一点上,遵循文章中的说明几乎是我所了解的范围。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-06-21 02:18:21

DiffMerge

不确定这是否有用,但这是我对difftool和DiffMerge的配置。注意,我使用的是msysgit Bash (不确定它对Cygwin或PoshGit用户是否不同):

代码语言:javascript
复制
[diff]
    tool = dm
[difftool "dm"]
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"

我目前正在使用Git 2.0,但我似乎还记得在Git 1.8.x或者甚至可能早在Git 1.7.x的时候设置了它,所以尝试一下,看看它是否有效。

奖金与无与伦比的3专业

实际上,我现在使用无与伦比的3 Pro在Windows上进行了大部分的扩展,尽管有时我仍然会使用DiffMerge。下面是我所有的difftool设置,如果您想要切换的话:

代码语言:javascript
复制
[merge]
    tool = bc3
[diff]
    tool = bc3
[difftool "dm"]
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[difftool "bc3"]
    cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[mergetool "bc3"]
    cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
票数 8
EN

Stack Overflow用户

发布于 2018-05-29 21:32:42

我知道这是个老生常谈的问题,我意识到我的处境可能只是因为我太笨了,但我确实试图解决这个问题。尽管如此,有希望的是,一个和我犯同样错误的人将来不会完全迷失方向。

确保项目使用git diff**!**显示的

我有一个非常简单的一行改动。做了一个git add .然后就被打断了。回来看完后决定再核对一下。我没有意识到做git add会阻止我使用git difftool

git reset允许git difftool工作。

票数 9
EN

Stack Overflow用户

发布于 2016-01-07 22:27:52

其他的答案对我都没有用。我终于在Windows 7,8,10上使用了Git 2.6.3,2.7.0

1)确保您可以写入并使用存储在~/. .gitconfig中的全局.gitconfig,这是相对于您的主路径的。

使用:

代码语言:javascript
复制
git config --global --edit

或者只需导航到windows资源管理器中的文件并以这种方式编辑它。

可以通过导航到windows中的环境变量( 7,右键单击计算机->Properties->高级系统设置->环境变量)来设置HOME变量。

2)确保扩散器在机器上的路径变量中。这与HOME变量位于同一个位置。我在我的人生道路上加入了这个:

代码语言:javascript
复制
C:\Program Files\SourceGear\Common\DiffMerge;

3)要使缺省值扩散,在全局.gitconfig文件中添加以下内容:

代码语言:javascript
复制
[merge]
    tool = diffmerge
[mergetool]
    prompt = true
[mergetool "diffmerge"]
    path = C:\\Program Files\\SourceGear\\Common\\DiffMerge\\sgdm.exe

'\‘是一个转义字符

重复使用不同的工具,这就是我所需要的。不需要包装脚本或本地远程变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24194569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档