You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git中表示当前目录的.路径规范的文档出处在哪里?

为什么git add .中的.能匹配当前目录所有文件?

根据你提到的调研,确实Git官方pathspec通用语法文档里没有单独明确.的匹配规则,但这里的关键是要结合Git的目录处理逻辑和Unix文件系统的约定来理解:

1. Git对目录型pathspec的递归处理

Git的pathspec规则里有一条隐含逻辑:当pathspec指向一个目录时,Git会递归匹配该目录下的所有文件(除了被.gitignore排除的内容)。而.在文件系统中本身就是当前目录的指代,所以git add .本质上是告诉Git递归添加当前目录下的所有可追踪文件。

这条规则在git add的命令文档中有间接说明:当你指定一个目录作为pathspec时,Git会自动添加该目录下的所有文件(包括子目录中的文件),.作为当前目录自然适用这个逻辑。

2. 并非依赖fnmatch的通配符匹配

你提到的fnmatch(3)和glob(7)规则,是Git处理带通配符(比如*、?)的pathspec时使用的逻辑,但.不属于通配符——它是一个真实的目录路径(当前目录),所以不触发通配符匹配逻辑,而是直接按目录路径处理。

3. 官方文档的补充说明

虽然pathspec的通用语法文档没单独列.,但在Git的术语表(git help gitglossary)中,pathspec的定义包含了“相对路径”的范畴,.作为相对路径的起点,自然被Git识别为当前工作目录。同时,git add的文档明确指出,指定目录会递归添加其内容,这就是.生效的官方依据。


内容的提问来源于stack exchange,提问作者M. Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 11:37:47