2010-01-21 291 views
25

是否有可能得到git difftool命令来打开一个目录比较更改的文件和分段/检查文件之间?git difftool给目录比较?

所以理想情况下,如果2个文件发生了变化,它们将是唯一显示的2个,但在一个目录比较中。

我读过关于让git并行提供所有文件差异的文章,所以像BeyondCompare这样的工具全部都是the diffs in tabs,但我不满意!

可以将更改文件的副本从暂存/检入文件拖到临时文件夹中,然后将其打开。这是唯一的选择吗?

+0

我在我的(类似)的问题可能会帮助你得到的答案:http://stackoverflow.com/questions/4248830/directory-comparison-of-git-branches – 2011-01-06 03:42:37

回答

37

更新2012年6月(2半,年后):

这(比较目录,而不是文件的文件)似乎是即将上市:
[ANNOUNCE] Git 1.7.11.rc1

git difftool“了解了”--dir-diff“选项以生成外部差异工具,该工具可以在填充两个临时目录而不是运行外部实例工具每个文件对一次

见 “Patch difftool: teach difftool to handle directory diffs


原来的答复(2010年1月)

一个可以拉改动过的文件从暂存/文件中检查的副本到一个临时文件夹,然后打开它。这是唯一的选择吗?

基本上是:

您difftool脚本将:

  • 创建2个临时目录
  • 将自己定义为一个diff工具
  • 调用git的差异
    • 然后调用自己的文件来区别
    • 在该模式下
    • ,相同的脚本,对每个文件,仅在两个版本复制到DIFF两个临时目录
  • 然后去和两个临时目录调用比较工具(如beyondCompare或的WinMerge)

this question中有第一个例子。

+1

为什么2临时目录? 最好将已更改的文件与git沙箱与签入的源代码进行比较? 因此,它只有检入的文件已被修改,需要复制/转到临时目录? 同样这也是最好的,因为人们可能想要将更改从checkedin文件合并回工作沙箱。 有没有人有任何缩进在git中制定这种支持标准? – 2010-01-23 11:18:50

+0

查看更多的答案:http://stackoverflow.com/a/10879804/6309 – VonC 2012-06-04 10:27:19

2

我总是用--dirstat=files

[email protected]:virenze$ git diff --dirstat=files 
    4.1% modules/custom/virenze_conversations/ 
    7.0% modules/custom/virenze_crs/ 
    8.3% modules/custom/ 

,这意味着我已经删除迪尔斯virenze_conversationscustomvirenze_crs。 (我不知道是什么意思百分比...)

你或许可以使用所有正常diff选项:--cached,分行名称等