【问题标题】:git difftool to give directory compare?git difftool 给目录比较?
【发布时间】:2010-01-21 23:45:19
【问题描述】:

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

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

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

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

【问题讨论】:

标签: git diff beyondcompare


【解决方案1】:

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

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

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

见“Patch difftool: teach difftool to handle directory diffs


原始答案(2010 年 1 月)

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

基本上是的:

你的 difftool 脚本会:

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

this question 中有第一个示例。

【讨论】:

  • 为什么有 2 个临时目录?最好将更改的文件与 git 沙箱与签入的源进行比较?因此,只有已更改的签入文件需要复制/取出到临时目录中?这也是最好的,因为人们可能希望将签入文件中的更改合并回工作沙箱。有没有人打算在 git 中制定这种支持标准?
  • 查看此答案了解更多信息:stackoverflow.com/a/10879804/6309
【解决方案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/

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2023-03-03
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多