1

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

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

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

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

git difftool branch1..branch2

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

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

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

4

1 回答 1

2

我不知道我一直在看什么。当我做了一些差异并重新阅读 git diff-tool 的帮助页面以记住参数时,我偶然发现了解决方案。通常我只阅读 git diff 帮助页面,因为它们共享相同的参数。

在那里我看到了参数 -d 并试了一下。
带有文件夹和文件的 2-way diff 的解决方案是命令:

git difftool -d branch1 branch2
git difftool --dir-diff branch1 branch2

或者

git difftool -d commit1 commit2

然后 Beyond Compare 以目录差异模式打开,我可以看到分支或提交之间的差异。
虽然您只能看到更改的文件,但不包括未更改的文件。但这并不是一个真正的缺点。

git-difftool的帮助文件中它说:

-d
--dir-diff

    Copy the modified files to a temporary location and perform a       
 directory diff on them. This mode never prompts before launching the diff tool.
于 2015-04-24T10:02:22.910 回答