git difftool给目录比较?

时间:2010-01-21 23:45:19

标签: git diff beyondcompare

是否可以使用git difftool命令打开已更改文件与登台/已检查文件之间的目录比较?

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

我已经阅读了关于让git并行提供所有文件差异的帖子,所以像BeyondCompare这样的工具都有the diffs in tabs,但我对此并不满意!

可以将已更改文件的副本从登台/签入文件中提取到临时文件夹中,然后再将其打开。这是唯一的选择吗?

2 个答案:

答案 0 :(得分:44)

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个临时目录
  • 将自己定义为差异工具
  • 调用git diff
    • 然后调用自己的文件到diff
    • 在该模式下,每个文件的相同脚本仅将两个版本复制到两个临时目录中的差异
  • 然后继续在两个临时目录上调用diff工具(如beyondCompare或WinMerge)

this question中有一个第一个例子。

答案 1 :(得分:2)

我总是使用--dirstat=files

rudie@devver:virenze$ git diff --dirstat=files
   4.1% modules/custom/virenze_conversations/
   7.0% modules/custom/virenze_crs/
   8.3% modules/custom/

这意味着我删除了virenze_conversations中的目标virenze_crscustom。 (我不知道百分比是什么意思......)

您可以使用所有正常的diff选项:--cached,分支名称等。