如何在Git中执行不区分大小写的diff

时间:2013-06-29 12:08:44

标签: git diff case-insensitive

git diff不支持不区分大小写的文件比较。 Google会显示很少有人要求使用该功能,而且只会与其他git diff切换相结合,例如-G--color-words

我不关心其他开关,只要git diff可以向我显示不区分大小写的差异。

由于我没有看到任何具体问题,因为我在研究这个问题一小时后找到了解决方案,我正在添加这个问题和答案。

2 个答案:

答案 0 :(得分:19)

解决方案是使用git difftool。使用以下config命令,我可以添加一个名为diff的自定义idiff工具供Git使用:

git config --global difftool.idiff.cmd 'diff -i $LOCAL $REMOTE'

通过这种自定义,我可以看到不区分大小写的比较:

git difftool --tool idiff <other diff options> <Git references or files>

例如

git difftool -t idiff HEAD~1 -- my_schema.sql

由于git difftool每次在调用该工具之前都会提示(是/否),请使用-y切换difftool或添加此配置选项以避免提示:

git config --global difftool.prompt 0

答案 1 :(得分:1)

为了扩展Gurjeet Singh的答案,以及caw的colordiff评论,在Windows中我做了以下操作以将所有内容捆绑在一起:

  1. 如果需要,请安装适用于Windows的Strawberry Perl发行版。任何Windows Perl发行版都可以使用,但Strawberry Perl是免费软件/开源软件,附带电池。请注意网站的结果,因为有一个NSFW站点具有类似的域IIRC。使用谷歌而不是猜测。

  2. 安装MinGW / MSYS。 Git for Windows已经附带了MSYS版本,因此你可以使用它的make(1),但你的里程可能会有所不同。

  3. 下载并安装colordiff Perl脚本。我编辑了Makefile,将安装位置更改为〜/ bin和〜/ etc(其中〜是%USERPROFILE%),因为〜/ bin已经在我的PATH中了。根据需要进行调整。

  4. (cmd.exe)编辑注册表环境变量(搜索环境变量的开始菜单)并将.PL添加到PATHEXT(以及必要时用于PATH的bin /。)

  5. (cmd.exe)创建一个bash脚本(例如,〜/ bin / colordiffless.bash),将任何参数传递给colordiff.pl(colordiff接受diff选项并自动传递它们)并通过less (1)。 colordiff输出的颜色代码是ANSI,cmd.exe不会理解,但更少。您还可以通过这种方式恢复Git的寻呼机行为(如果需要,可以配置LESS环境变量)。

    #!/bin/bash
    colordiff.pl "$@" | less
    
  6. 像Gurjeet一样设置别名,除了调用diff直接调用你的bash脚本。颜色代码输出是ANSI,因此您需要一些东西来转换它们。我碰巧知道MSYS less(1)会做到这一点,你还保留了Git的寻呼机行为!

    git config --global difftool.cldiff.cmd "colordiffless.bash -ui $LOCAL $REMOTE"
    

    (来自cmd.exe,所以双引号是文字的,$ LOCAL和$ REMOTE也是文字文本)

  7. 最后,别名difftool命令,以便您可以键入单个自定义命令而不是difftool命令:

    git config --global alias.cldiff "difftool -y -t cldiff"
    
  8. 修改

    我误解了寻呼机的行为。 difftool为每个文件调用命令,因此不会为每个diff获取单个pager输出,而是为每个文件获取一个寻呼机。要解决这个问题,你可能希望在脚本中包装difftool -y并将其整个输出管道化为less。