Windows 7下Git Bash执行Git Diff获取仅INI文件列表报错求助
解决Windows 7 Git Bash中Git Diff筛选INI文件并写入日志的问题
你遇到的问题根源在于Windows 7 Git Bash对命令参数的解析逻辑和Mac下的bash存在差异,加上Git本身对参数边界的严格校验,导致$(find)被误识别为修订版本参数,从而抛出歧义错误。下面给你两个可行的解决方案:
方案一:明确分隔修订版与路径参数
在Git命令中,--是专门用来区分修订版本范围和目标文件路径的标记,加上它就能避免参数歧义。同时给*.ini加上引号,防止Windows系统提前展开通配符:
git diff refs/tags/l-build..HEAD --name-only -- $(find . -name "*.ini") >> log.txt
这个命令的逻辑和你在Mac上的写法一致,但通过--明确告诉Git:后面的内容是要筛选的文件路径,不是修订版本。
方案二:直接用Git的通配符筛选(更简洁)
其实不需要额外调用find命令,Git本身支持通配符匹配文件,同样用--分隔参数,写法更简单:
git diff refs/tags/l-build..HEAD --name-only -- '*.ini' >> log.txt
这里的单引号是为了让Git自己处理通配符匹配,而不是让Git Bash提前解析。
这两种方法都能在Windows 7的Git Bash中正常运行,帮你获取指定版本范围内所有修改过的INI文件列表并写入log.txt。
内容的提问来源于stack exchange,提问作者Sergey Romanov
相关产品推荐
相关产品推荐

