35

是否可以让 git difftool 命令打开目录比较更改的文件和暂存/检查的文件?

所以理想情况下,如果 2 个文件已更改,它们将是唯一显示的 2 个,但在目录比较中。

我已经阅读了有关让 git 并行提供所有文件差异的帖子,因此 BeyondCompare 之类的工具在选项卡中包含所有差异,但我对此并不满意!

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

4

2 回答 2

50

2012 年 6 月更新(两年半后):

这(比较目录而不是逐个文件)似乎很快就会可用:
请参阅[ANNOUNCE] Git 1.7.11.rc1

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

请参阅“补丁difftool:教difftool处理目录差异


原始答案(2010 年 1 月)

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

基本上是的:

您的 difftool 脚本将:

  • 创建 2 个临时目录
  • 将自己定义为差异工具
  • 调用 git diff
    • 然后调用自己的文件来区分
    • 在该模式下,对于每个文件,相同的脚本仅将两个版本复制到两个临时目录中的差异
  • 然后继续在两个临时目录上调用差异工具(如 BeyondCompare 或 WinMerge)

你有这个问题的第一个例子。

于 2010-01-22T05:15:22.660 回答
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/

这意味着我已经删除了 dirsvirenze_conversationsvirenze_crsin custom。(我不知道百分比是什么意思......)

您可能可以使用所有常规diff选项:--cached、分支名称等。

于 2013-12-23T11:15:49.953 回答