git diff
不支持不区分大小写的文件比较。 Google会显示很少有人要求使用该功能,而且只会与其他git diff
切换相结合,例如-G
或--color-words
。
我不关心其他开关,只要git diff
可以向我显示不区分大小写的差异。
由于我没有看到任何具体问题,因为我在研究这个问题一小时后找到了解决方案,我正在添加这个问题和答案。
答案 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中我做了以下操作以将所有内容捆绑在一起:
如果需要,请安装适用于Windows的Strawberry Perl发行版。任何Windows Perl发行版都可以使用,但Strawberry Perl是免费软件/开源软件,附带电池。请注意网站的结果,因为有一个NSFW站点具有类似的域IIRC。使用谷歌而不是猜测。
安装MinGW / MSYS。 Git for Windows已经附带了MSYS版本,因此你可以使用它的make(1),但你的里程可能会有所不同。
下载并安装colordiff Perl脚本。我编辑了Makefile,将安装位置更改为〜/ bin和〜/ etc(其中〜是%USERPROFILE%),因为〜/ bin已经在我的PATH中了。根据需要进行调整。
(cmd.exe)编辑注册表环境变量(搜索环境变量的开始菜单)并将.PL添加到PATHEXT(以及必要时用于PATH的bin /。)
(cmd.exe)创建一个bash脚本(例如,〜/ bin / colordiffless.bash),将任何参数传递给colordiff.pl(colordiff接受diff选项并自动传递它们)并通过less (1)。 colordiff输出的颜色代码是ANSI,cmd.exe不会理解,但更少。您还可以通过这种方式恢复Git的寻呼机行为(如果需要,可以配置LESS环境变量)。
#!/bin/bash
colordiff.pl "$@" | less
像Gurjeet一样设置别名,除了调用diff直接调用你的bash脚本。颜色代码输出是ANSI,因此您需要一些东西来转换它们。我碰巧知道MSYS less(1)会做到这一点,你还保留了Git的寻呼机行为!
git config --global difftool.cldiff.cmd "colordiffless.bash -ui $LOCAL $REMOTE"
(来自cmd.exe,所以双引号是文字的,$ LOCAL和$ REMOTE也是文字文本)
最后,别名difftool命令,以便您可以键入单个自定义命令而不是difftool命令:
git config --global alias.cldiff "difftool -y -t cldiff"
我误解了寻呼机的行为。 difftool为每个文件调用命令,因此不会为每个diff获取单个pager输出,而是为每个文件获取一个寻呼机。要解决这个问题,你可能希望在脚本中包装difftool -y并将其整个输出管道化为less。