tl; dr:如何让我的自定义difftool打开分支的目录/文件视图或提交diff,这样我就可以在单个文件差异中跳转到difftool内部并返回目录列表选择下一对文件?使用git和Beyond Compare 4.(从文件列表中来回跳转到文件差异和后退部分是difftools的一个内置功能)。
详细信息:
在过去的几个月里,我一直在为Git工作,这是一个很棒的工具。但我想知道是否有可能解决我在互联网上搜索git主题时找不到的功能。编写一些东西来获得类似的行为也没关系。但也许是内置或有人已经解决了问题?
我想做什么?
从我以前的工作环境中,我有可能选择查看2个签到(提交)的差异。它在我的自定义diff工具中打开了一个文件/目录差异列表,我并排查看了所有文件。一方提交(或分支)一方在另一方提交(或分支)二号。我可以选择一个文件对并查看2个文件的差异,并在完成后跳回目录/文件列表(自定义difftool功能)。
我的git在做什么?
目前,如果我做一个涉及几个文件的差异,如
git difftool branch1..branch2
git bash会在另一个文件后打开一个文件。分别询问每一个。如果有很多文件,如果我不确定我想要事先看到什么,或者我只是想得到一个概述,这有点尴尬。而且我特别喜欢在我的difftool中看到它。
Ann:一个更加软化的功能是能够看到3个文件差异,包括文件的共同祖先(但不在文件/目录视图中)。的相关信息:
我在Windows平台上,所以如果你知道一个Linux解决方案或有一个设置,请给我一些有关涉及linux内部的信息。
可能我正在使用的工具有一个秘密"功能已经?除了命令行git bash之外,它们还是Visual Studio 2013和Sourcetree
如果相关:我使用的difftools是Beyond Compare 4和Sourcegear DiffMerge。
答案 0 :(得分:2)
我不知道自己一直在看什么。当我做了一些差异并重新阅读git diff-tool的帮助页面以记住参数时,我偶然发现了解决方案。通常我只阅读git diff帮助页面,因为它们共享相同的参数。
在那里我看到了参数-d并尝试了一下 具有文件夹和文件的双向差异的解决方案是命令:
git difftool -d branch1 branch2
git difftool --dir-diff branch1 branch2
或
git difftool -d commit1 commit2
然后Beyond Compare在目录diff模式下打开,我可以看到分支或提交之间的差异 虽然您只能看到更改的文件不包括未更改的文件。但这并不是一个缺点。
在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.