Git v2.20.0.windows.1无法批量添加深层目录*.txt文件求助
问题诊断与解决方案
可能原因
Windows Shell通配符展开限制
你使用的是Windows环境下的Git 2.20.0,若在CMD中执行git add *.txt,CMD的通配符只会匹配当前工作目录下的.txt文件,不会递归遍历子目录。而git add *.c正常,大概率是当前目录存在.c文件,需要添加的.txt文件却分布在子目录中,导致CMD展开后的*.txt未匹配到目标文件,Git自然不会执行添加操作。旧版本Git兼容性Bug
Git 2.20.0是2019年发布的旧版本,确实存在Windows环境下的路径匹配、通配符处理Bug,即便路径无特殊字符,部分场景下的批量文件匹配逻辑也可能存在异常。
诊断命令
- 确认当前Shell类型:
# Git Bash下执行 echo $SHELL # CMD下执行 echo %COMSPEC% - 查看通配符匹配范围:
# CMD下查看当前目录所有.txt dir *.txt # CMD下查看递归所有.txt dir /s *.txt # Git Bash下查看递归所有.txt ls **/*.txt - 验证Git通配符处理逻辑:
# 让Git自行处理通配符(CMD用双引号,Bash用单引号) git add "*.txt" # 检查Git是否启用自行处理通配符 git config core.globpathspec - 排除.gitignore影响:
若输出为空,说明文件未被忽略;若有输出,需对应调整忽略规则(但你指定路径可添加,此情况概率极低)。git check-ignore -v D:\projects\srm\srm_frmw_v10\keil\Drivers\CMSIS\LICENSE.txt
解决方案
- 修正通配符使用方式
- 在Git Bash中使用递归通配符:
git add **/*.txt - 在CMD中让Git处理递归通配符:
git add "**/*.txt" - 切换到目标子目录后执行批量添加:
cd D:\projects\srm\srm_frmw_v10 git add *.txt
- 在Git Bash中使用递归通配符:
- 升级Git版本
直接安装最新版Git for Windows(当前稳定版已更新至2.40+),新版本修复了大量旧版本的Windows兼容性问题,大概率能解决此类批量匹配异常。
内容的提问来源于stack exchange,提问作者zulunation
相关产品推荐
相关产品推荐

