标签: difftool

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

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

git diff diffmerge difftool git-difftool

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

git difftool,立即打开所有diff文件,而不是串行打开

默认的git diff行为是以串行方式打开每个diff文件(等待先前文件在打开下一个文件之前关闭).

我正在寻找一种方法来同时打开所有文件 - 例如,在BeyondCompare中,这将打开同一BC窗口中选项卡中的所有文件.

这样可以更轻松地查看一组复杂的变化; 在diff文件之间向后和向前翻转并忽略不重要的文件.

git difftool

229
推荐指数
3
解决办法
5万
查看次数

为什么"git difftool"不能直接打开工具?

我这样配置git:

git config --global diff.tool meld
Run Code Online (Sandbox Code Playgroud)

当我跑:

git difftool
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

Viewing: 'hello.txt'
Hit return to launch 'meld': 
Run Code Online (Sandbox Code Playgroud)

然后,如果我按Enter,meld将启动.

如何禁用此消息,以便meld在键入后立即启动git difftool

git diff difftool

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

如何让WinMerge成为我的git mergetool?

我正在尝试将WinMerge与Git集成,因为我之前在Windows 7旗舰版上看到过其他人.

我已经按照以下步骤操作,但是当我执行git mergetool时默认继续显示错误,默认为vimdiff.

在git的根目录中创建了一个名为winmerge.sh的文件:C/Program Files(x86)/ Git/with:WinMergeU是正确的位置.

#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files (x86)/WinMerge/WinMergeU.exe" 
git /e /u /dl "Base" /dr "Mine" "$1" "$2"
Run Code Online (Sandbox Code Playgroud)

并使用以下命令.

git config --global diff.tool winmerge
git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false
Run Code Online (Sandbox Code Playgroud)

错误显示为:

git config option merge.tool set to unknown tool: winmerge
Run Code Online (Sandbox Code Playgroud)

git winmerge mergetool difftool

49
推荐指数
9
解决办法
6万
查看次数

Git和DiffTool问题:LOCAL和REMOTE指向什么?

我一直在努力让tortoisemerge在Git中作为difftool选项工作,我的.gitconfig文件当前显示:

   [diff]
        tool = tortoise

    [difftool "tortoise"]
        cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE

    [difftool]
        prompt = false
Run Code Online (Sandbox Code Playgroud)

根据tortoise merge docs,'mine'命令指出哪个文件将在右边显示,以双向diff.

我的问题是,GIT提供的LOCAL和REMOTE变量实际指向什么?该文件是一个有点含糊指出,

LOCAL设置为包含diff前映像内容的临时文件的名称,REMOTE设置为包含diff后映像内容的临时文件的名称.

当我修改一个文件,然后输入'git difftool'时,问题出现了tortoisemerge是在LEFT上使用工作目录文件启动的,而不是我假设的那样.我知道我只能切换"我的"和"本地"命令,但我试图找出本地/远程指向的内容以及解决此问题的最佳方法

git difftool

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

在外部3向差异工具中查看已经提交的Git合并

有没有办法查看已经在3-way diff中提交的合并?

如果3周前分支机构之间发生了巨大的合并,有什么方法可以在像BeyondCompare3这样的外部差异工具中看到它的3路差异吗?我正在寻找合并提交中更改的文件.奖金,如果我能得到它只显示冲突和任何手动更改,而不是看到两个分支之间的文件的完整差异.

如果左侧有<<<<< ===== >>>>>冲突标记而右侧是承诺结果,我不介意解决双向差异问题.

我试着看看diff-tree,diff-files,diff,difftool,show等等,但是无法弄明白.我知道gitk会在合并提交中显示更改,但我不喜欢上下差异视图,当有大量更改时很难理解.

如果我能做点什么的话 git difftool --cc firstparent..secondparent..result

git merge commit difftool

30
推荐指数
2
解决办法
2916
查看次数

如何防止git vimdiff以只读方式打开文件?

我正在尝试使用vimdiff作为Git的diff工具,但由于某种原因,文件始终以只读模式打开.它对原始文件有意义,但对我修改过的文件没有意义(因为我尚未提交它们).

这是我目前的.gitconfig:

[diff]
        tool = vimdiff
[merge]
        tool = vimdiff
[difftool]
        prompt = false
Run Code Online (Sandbox Code Playgroud)

知道是什么原因引起的吗?

git vimdiff readonly difftool

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

git-difftool:使用meld进行完整文件树比较?

有没有一种简单的方法可以将旧git提交的文件树与工作文件树进行比较?

git-difftool做了非常相似的事情,但我不希望它实际上做任何差异; 重点是它调用的工具可以为它提供更好的界面.

git meld difftool

20
推荐指数
3
解决办法
9699
查看次数

p4merge在执行目录diff时失败了吗?

我试图在git中使用p4merge作为我的差异/合并工具.

但是我遇到了严重的问题.

我可以使用p4merge作为difftool,git difftool <sha1> <sha1>效果很好.我也可以将它用作合并工具.但是当我试图让它做一个目录差异时git difftool -d <sha1> <sha1>会弹出一个错误对话框,上面写着:

错误:'/ var/folder/6s/6sCbckgPGH42yLSh2eXveE +++TI/-Tmp-/git-difftool.9rgKV/left'是(或指向)无效文件.'/var/folders/6s/6sCbckgPGH42yLSh2eXveE+++TI/-Tmp-/git-difftool.9rgKV/right'是(或指向)无效文件.

使用'p4merge -h'获取更多帮助.

这是因为p4merge不支持目录差异吗?有没有什么办法解决这一问题?

顺便说一句,这是我的.gitconfig设置

; p4merge settings
; Can't do directory diff?
[difftool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/MacOS/p4merge \"$LOCAL\" \"$REMOTE\"
    trustExitCode = false
[mergetool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/MacOS/p4merge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\" 
    trustExitCode = false

[difftool]
    prompt = false
[diff]
    ; tool = kdiff3
    tool = p4merge
[merge]
    ; tool = kdiff3
    tool = p4merge
Run Code Online (Sandbox Code Playgroud)

git p4merge difftool

16
推荐指数
1
解决办法
2658
查看次数

Windows上的Git Diff和Meld

有没有人让Meld在Windows上与Git合作?我试图让它工作,我没有成功.

我安装了Meld,当我从命令行调用它时有两个文件作为参数,它们很好地区分它们以便正确安装Meld.但是我无法使用Git(Git Diff).我使用的git version 1.8.1.msysgit.1是Git 版本.

我尝试了几件事:我创建了一个shell脚本,meld.sh:

#!/bin/bash
meld.exe "$2" "$5"
echo $2
echo $5
Run Code Online (Sandbox Code Playgroud)

并从Git中使用它:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"D:\\meld.sh\"
Run Code Online (Sandbox Code Playgroud)

我试着把它添加为像这样的difftool:

[diff]
    tool = meld

[difftool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\meld\\meld.exe\" 
Run Code Online (Sandbox Code Playgroud)

或者像这样:

[diff]
    tool = meld

[difftool "meld"]
    cmd = '\"/c/Program Files (x86)/Meld/meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
Run Code Online (Sandbox Code Playgroud)

但它似乎真的不起作用.我还试图从我的shell脚本中回显第二个($ 2)和第五个($ 5)参数,没有输出.我还尝试过以下几种方式使用批处理脚本:

meld.exe %2 %5
Run Code Online (Sandbox Code Playgroud)

要么

meld.exe %~2 %~5
Run Code Online (Sandbox Code Playgroud)

但它确实不起作用......如何在传播Git到Meld时传递文件的两个版本?这很烦人......

git git-diff meld msysgit difftool

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