Git 点 (.) 当前目录路径规范记录在哪里?

问题描述 投票:0回答:2

根据我过去的经验和当前的互联网研究,Git 命令中的

.
(例如
git add .
)似乎是与当前目录匹配的
pathspec
。 但是,我没有在 git-scm.com 的官方 git 文档中看到这个定义。

pathspec
文档说:

pathspec语法如下:

  • 任何路径都与自身匹配
  • 最后一个斜杠之前的路径规范表示目录前缀。该路径规范的范围仅限于该子树。
  • 路径规范的其余部分是路径名其余部分的模式。相对于目录前缀的路径将使用 fnmatch(3) 与该模式进行匹配;特别是, *? 可以匹配目录分隔符。

遵循这些规则告诉我,

.
可能与
fnmatch(3)
匹配。 根据 man7.org
fnmatch(3)
检查字符串参数是否与模式参数匹配,根据
glob(7)
:

fnmatch() 函数检查字符串参数是否匹配 模式参数,它是 shell 通配符模式(请参阅 全局(7))。

glob(7)
文档定义了一些特殊的通配符,但似乎没有对
.
有任何特殊支持。

如果字符串包含以下之一,则该字符串是通配符模式 字符“?”、“*”或“[”。

我在这里缺少什么? 为什么

.
匹配当前目录中的所有文件,这在哪里记录?

git filesystems
2个回答
0
投票

您的 shell(bash、zsh、csh 等)将

.
识别为当前工作目录(并将
..
识别为当前工作目录的父目录)。 Git 只是使用 shell 传递给它的内容。


0
投票

.
是类 Unix 操作系统和 Windows(以及各种其他操作系统)中的文件系统条目,指的是当前工作目录。

由于

.
是根据文件系统指向当前工作目录的路径,因此第一个 pathspec 语法规则(“任何路径与自身匹配”)使其在 Git 中具有完全相同的含义。

© www.soinside.com 2019 - 2024. All rights reserved.