问题标签 [git-difftool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1342 浏览

git - 分支或提交的 Git diff 在可视 difftool 中显示文件列表概述,然后可选择单个文件 diff

tl;dr:如何让我的自定义 difftool 打开分支的目录/文件视图或提交差异,以便我可以在单个文件差异中跳转到我的 difftool 内部并返回目录列表以选择下一对文件?使用 git 和 Beyond Compare 4。(从文件列表到文件 diff 来回跳转部分是 difftools 的内置功能)。

详细信息:
过去几个月我一直在研究 Git,它是一个很棒的工具。但我想知道是否有可能解决我在互联网上搜索 git 主题时没有找到的功能。编写脚本以获得类似的行为也可以。但也许它是内置的或者已经有人解决了这个问题?

我想做什么?
从我以前的工作环境中,我可以选择查看 2 个签入(提交)的差异。它在我的自定义差异工具中打开了一个文件/目录差异列表,我并排看到了所有文件。在一侧提交(或分支)第一个,另一侧提交(或分支)第二个。我可以选择一个文件对并查看 2 个文件的差异,并在完成后跳回目录/文件列表(自定义 difftool 功能)。

我的 git 在做什么?
目前,如果我做一个涉及几个文件的差异,比如

git bash 一个接一个地打开一个文件。分别询问每一个。如果有很多文件并且我不确定我想事先看什么或者我只是想获得一个概述,这有点不合时宜。我特别希望在我的 difftool 中看到它。

Ann.:更复杂的功能是能够查看 3 个文件的差异,包括文件的共同祖先(但不在文件/目录视图中)。

信息:
我在 Windows 平台上,所以如果你知道一个 linux 解决方案或有一个设置,请给我一些有关 linux 内部的信息。
可能我正在使用的工具已经具有“秘密”功能?它们是 Visual Studio 2013 和 Sourcetree 以及命令行 git bash。
如果相关:我使用的 difftools 是 Beyond Compare 4 和 Sourcegear DiffMerge。

0 投票
1 回答
69 浏览

terminal - “git difftool”的奇怪终端行为

当我尝试使用“git difftool”时,终端似乎进入了按“enter”键输出^M而不是接受默认选项的模式:

我可以 control-c 摆脱它,但我无法让 difftool 工作。

“git diff”就像一个魅力。

我正在努力解决这个问题。

我正在运行 Ubuntu 14.04.2 LTS,我的 TERM 是 xterm,我的 .gitconfig 非常简单,其中没有任何关于输出的内容:

如何使用“git difftool”?

0 投票
0 回答
378 浏览

meld - 在没有包装脚本的情况下使用 meld 作为 git diff 工具

我已经在我的系统上安装了 meld;$ meld从命令行工作。我愿意

接着

但是, git difftool 不会调用 meld。如果我这样做,git difftool我会将差异转储到控制台中。鉴于git 文档,这是出乎意料的:

-t --tool= 使用<tool>. 有效值包括emerge、kompare、meld 和vimdiff。运行git difftool --tool-help有效<tool>设置列表。

如果未指定差异工具,git difftool将使用配置变量diff.tooldiff.tool如果未设置配置变量,git difftool将选择合适的默认值。

我看过一些关于使用 python 或 bash 脚本调用 meld 的讨论,但鉴于 git 文档明确提到 meld 作为可能的工具之一,我认为这应该在没有包装器的情况下工作。

有没有办法在不使用外部包装器的情况下使用 meld 作为 git diff 工具?

0 投票
2 回答
5013 浏览

git - OSX 使用 Beyond Compare 作为 git difftool

尝试使用 git 启动 Beyond Compare 时,出现此错误:

diff 工具 bc3 不能用作“bcompare”

致命的:外部差异死了,停在 plugins/PushPlugin.m

设置差异工具:

尝试比较目录:

0 投票
0 回答
240 浏览

git - 为什么我的 MsysGit bash 不能使用 winmerge 作为 difftool

我尝试将 winmerge 用作 difftool,但我的 git bash 无法使用它。我尝试使用跟随 cmds。

并尝试直接编写 .gitconfig 文件。我下载了Git2.5,在mergetoo/中找到winmerge文件,复制到我的Git中。设置PATH后,git difftool --tool-help显示为

然后我尝试git difftool了,bash 只使用 vimdiff,我尝试git difftool -t winmerge(or WinMerge)了,bash 实际上也使用 vimdiff。


我的努力似乎奏效了。我卸载了 git-for-windows 1.9.5 并安装了 git-for-windows 2.4.5,然后我从 git-master.zip 复制了 winmerge 文件,该文件从 github 下载到了我的 git 文件夹中。并../git-core/mergetool/检查了$PATH。在这些步骤之后,我输入了git config merge.tool winmergegit config diff.tool winmerge。并且git mergetool成功启动了WinMerge,但是git difftool还是无法启动WinMerge。


因此我的尝试不是单一的,所以我不知道哪个操作是关键点。

0 投票
2 回答
2188 浏览

git - 如何使用 difftool 区分 .odt 文件?kdiff3 diff 输出不可读的字符

在 git 中,我尝试使用.gitattributesdifftool 比较 .odt 文件、libreofice 编写器文件。从遵循本指南:http ://www-verimag.imag.fr/~moy/opendocument/我制作了一个.gitattributes文件 .gitattributes :

这使得 git diff 比较 .odt 中的文本,但是当 git difftool 启动 kdiff3 来比较 .odt 文件时,我收到以下弹出错误:

...文件中的所有字符都是胡说八道。

什么地方出了错?我该如何解决?

PS:

我不知道这是否重要,但我想我没有配置'diff.tool',因为每次我命令时:

我得到这个输出:

这就是为什么 kdiff3 似乎不适用于 odt2txt 的原因吗?

编辑:我尝试使用 Microsoft Word 文档执行此操作,并在此处更进一步。

我玩弄了 .kdiff3rc 配置...我添加的任何选项似乎都没有使不可读的字符可读。我将比较工具更改为 vimdiff;当我在 microsoft word 文档上执行 git difftool 时,vimdiff 显示以 .xml 结尾的文件列表,而不是不可读的字符。

当我在其中一个显示的文件上按 Enter 键时:

我在这里发布了一个关于这个问题的新问题。

0 投票
4 回答
27933 浏览

git - 如何在 Mac OS 中设置 kdiff3?

.gitconfig文件中,我设置了 git diff,如下所示:

在此设置中,kdiff 不可访问,并且在终端中运行时出现以下错误

你有什么建议我可以解决这个问题吗?在我当前设置的 Mac OS 10.10.5 git diff 工具中git merge tool,我想用 kdiff 替换。

0 投票
1 回答
1586 浏览

git - 使用 OS X FileMerge/opendiff 查看 git 差异,在目录视图中一次加载所有文件

我们正在使用 git 对我们的项目进行版本控制。在 OS X 下开发,我们想使用开发工具分发的FileMerge应用程序来显示 git 生成的差异:
如果我们理解正确,可以通过git difftool.


根据来自不同来源的建议,我们将其添加到我们的全局 git 配置文件中:

它适用于“逐个文件”差异。但是我们更喜欢在工具中一次加载目录差异,命令是git difftool --dir-diff.

调用 directory diff 命令时,正确生成了不同文件的列表,但如果我们实际尝试打开一个文件,则双方都显示错误文件不存在。显然,这是因为opendiff几乎立即终止,因此 git 删除了发生比较的临时文件夹。

按照这个答案,我们将这些行添加到我们的全局 git 配置文件中:

但它并没有解决文件不存在的问题(而且opendiff仍然几乎立即返回)。

这个用例的正确配置是什么?

0 投票
2 回答
5763 浏览

git - 在 git 中如何区分 microsoft word 文档?

我一直在关注本指南,了解如何区分 Microsoft Word 文档,但我遇到了这个错误:

为了解释我是如何得出这个错误的:我在我想要区分的存储库中创建了一个 .gitattributes 。.gitattributes 看起来像这样:

我已经安装了 docx2txt。我在Linux上。我创建了一个名为 docx2txt 的文件,其中包含以下内容:

$ chmod a+xdocx2txt 我把 docx2txt 放在 /usr/bin/

我做了:

然后试图区分两个微软的word文档。那是我得到上面提到的错误的时候。

我错过了什么?如何解决此错误?

PS:我不知道我的 shell 是否可以找到 docx2txt 因为当我这样做时:

我的终端冻结,处理某些东西,但不输出任何东西,当我执行这些命令时,会发生这种情况:

更新进度:我将 docx2txt 更改为

正如 pmod 建议的那样,现在git diff <commit>可以从命令行工作!耶!但是,当我尝试

git 启动 kdiff3,我得到这个弹出错误:

...文件中的所有字符都是胡说八道。命令行正确显示差异文本,但由于某种原因 kdiff3 没有正确显示差异文本。

如何在 kdiff3 或其他 gui 工具中正确显示差异文本?我应该将 kdiff3 更改为另一个工具吗?

额外:由于这些命令,我​​的 shell 似乎无法找到 docx2txt:

0 投票
3 回答
2419 浏览

git - Cygwin/MinGW 中的 Git difftool 慢得离谱

我注意到这git difftool很慢。每次差异调用之间会出现大约 1..2 秒的延迟。

为了对其进行基准测试,我编写了一个自定义difftool命令:

并将 Git 配置为在我的~/.gitconfig

我在 Git 源代码上对其进行了测试:

当我用 a 计时git difftool259b5e6d33,结果慢得离谱:

通过尝试更简单的脚本,它会更快:

我错过了什么?

这是我得到的结果

对于Cygwin结果,我测量了 2.8 秒git-difftool和 7.5 秒的git-difftool--helper. 后者有 98 行长。我不明白为什么这么慢。