这是我当前目录的内容。
$ ls
foo.foo
$ ls -a
. .. .bar.foo .foo foo.foo .gitignore
然后我把这个目录变成了一个 git 仓库。
$ git init
Initialized empty Git repository in /home/lone/foo/.git/
$ ls -a
. .. .bar.foo .foo foo.foo .git .gitignore
这是
.gitignore
的内容。$ cat .gitignore
*.foo
我看到
.gitignore
中的模式与 shell 中的相同模式的行为不同。在 shell 中 *.foo
仅匹配非 stash 文件,即不以句点开头的文件名。$ echo *.foo
foo.foo
但是
*.foo
中的 .gitignore
似乎匹配任何以 .foo
结尾的 stash 或非 stash 文件。$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
我在哪里可以了解有关 .gitignore 遵循的模式的精确定义的更多信息,以便我可以了解其行为与 shell glob 模式的不同之处和原因?
最佳答案
gitignore
使用 ' *
' 跟随 glob convention :
OP Lone Learner 询问 in the comments :
因为那是 shell configuration choice 。
类型(使用 shopt
,即 specific to bash ):
shopt -s dotglob
echo *.foo
.foo foo.foo
那是使用 dotglob关于git - .gitignore 遵循什么模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34901807/