在Git仓库的.gitignore文件中,/dir
和/dir/
有什么不同吗?
以下内容有何不同?
/dir
/dir/
/dir/*
发布于 2016-07-25 12:12:22
这是一个古老的问题,但在谷歌上排名很高,投票最多的答案是wrong。这是正确的答案。
是的,这些规则是不同的。
/dir
将匹配文件、目录、链接,名为dir
/dir/
的任何内容都将匹配仅名为dir
/dir/*
的目录将匹配名为dir
的目录中的所有文件、目录和任何其他内容(但不是dir
目录本身)。/dir
、/dir/
和/dir/*
是而不是的等价物。当使用覆盖规则时,区别是非常明显的,比如著名的!.gitkeep
,它绕过了跟踪空目录的限制。假设文件dir/.gitkeep
存在
/dir
和/dir/
时,Git甚至不会查看目录内部,因此看不到.gitkeep
。/dir/*
时,Git将检测到文件,并且如果提交了此.gitkeep
,则会保留目录,因为该规则不适用于目录本身,而只适用于其内容。<代码>H233<代码>F234由于前缀为/
,上面提到的所有规则都锚定在当前目录( .gitignore
所在的位置)。如果没有前缀,这些规则不仅适用于该特定目录,而且还适用于子目录或存储库中的所有位置(如果.gitignore
位于根级别)。
https://stackoverflow.com/questions/17888695
复制相似问题