相关疑难解决方法(0)

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

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

git diff diffmerge difftool git-difftool

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

在Git中使用Winmerge来编写diff

有没有办法在git中使用Winmerge来做Diffs?

git diff winmerge msysgit

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

WinMerge通过git difftool不断提示输入第二个文件

我使用@ VonC的优秀指令来配置我的开发系统,以便git difftool <BRANCH1> <BRANCH1>调用WinMerge.这是我做的:

  1. 放置以下内容~/.gitconfig:

    [DIFF]

    tool = winmerge
    
    Run Code Online (Sandbox Code Playgroud)

    [difftool"winmerge"]

    cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\"
    
    Run Code Online (Sandbox Code Playgroud)

    [difftool]

    prompt = false
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建了一个/usr/bin/winmerge.sh包含以下内容:

    echo Launching WinMergeU.exe: $1 $2

    "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"

现在,当我尝试通过启动WinMerge时git difftool <BRANCH1> <BRANCH1>,我收到了似乎正确的参数传递:

Launching WinMergeU.exe: /tmp/21qMVb_file1.c /tmp/1ACqik_file1.c

但是,由于一些奇怪的原因,而不是WinMerge并排显示两个文件,它提示输入第一个文件作为右侧,第二个文件接受为左侧:

[WinMerge应该显示2个文件而不是一个

为什么会这样?我在配置步骤中遗漏了什么?

PS当我在命令行输入时winmerge.sh file1.c file2.c,WinMerge会立即并排显示两个文件,就像我期望的那样.

更新:哦,哇,我刚刚注意到Both paths are invalidWinMerge提示底部的消息(并更新了屏幕截图以强调这一点).看起来这些文件根本不是由difftool生成的,或者路径有问题.

git winmerge difftool

7
推荐指数
1
解决办法
1427
查看次数

是否可以使用winmerge从cygwin查看git diffs?

我喜欢在cygwin上使用git,但我唯一的缺点是当我想要时git difftool我不能使用任何有用的东西.git diff对我来说大部分时间都没问题,但有时候我想用winmerge来查看这些差异git difftool是否有某种方法来设置它?

windows git cygwin windows-xp winmerge

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

Git清洁过滤器打破空文件

我从Git Attributes文档中设置了以下过滤器:

git config filter.dater.smudge expand_date
git config filter.dater.clean 'perl -pe s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"'
Run Code Online (Sandbox Code Playgroud)

现在我运行以下命令:

touch nfile.txt
git add --all
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

error: copy-fd: read returned Bad file descriptor
error: cannot feed the input to external filter perl -pe "s/\\\$DATE[^\\\$]*\\\$/\\\$DATE\\\$/"
error: external filter perl -pe "s/\\\$DATE[^\\\$]*\\\$/\\\$DATE\\\$/" failed
Run Code Online (Sandbox Code Playgroud)

该错误似乎与我的脚本无关,因为如果我运行此错误,则不会出现错误:

cat nfile.txt | perl -pe "s/\\\$DATE[^\\\$]*\\\$/\\\$DATE\\\$/"
Run Code Online (Sandbox Code Playgroud)

此外,这个旧线程提到错误可能是由于"从apply_filter调用的代码中的copy_fd",并建议修补filter_buffer_or_fdgit核心文件convert.c中的函数.就个人而言,如果我可以避免修补核心Git代码,我会非常高兴.

我需要清理错误消息,因为我不希望用户在提交的暂存阶段看到这种丑陋的输出.有办法避免这种情况吗?或者正确处理这种情况的方法?

如果之前已经回答过,我道歉.我在交换或互联网上找不到相同的文章.

linux git

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

如何获取winmerge以显示git中新文件的差异?

我可以通过winmerge向我展示修改后的文件的差异。但是对于新文件,winmerge会显示一个对话框,提示“左路径无效!”。我希望它将左窗格显示为空白,而右窗格显示文件的内容。

$ git difftool head^ newfile.txt
Run Code Online (Sandbox Code Playgroud)

winmerge对话框:

在此处输入图片说明

我在git版本2.8.2.windows.1上

这是我的difftool的git配置:

[diff]
    tool = winmerge
[difftool]
    prompt = false
[difftool "winmerge"]
    cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\"
Run Code Online (Sandbox Code Playgroud)

我想念什么?

git winmerge difftool

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