匹配 .gitignore 中的文件名结尾

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

在 git 存储库中,我想排除名为

main
的文件,但不排除名为
main.c
的文件。我该怎么做?

如果我将其添加到

.gitignore
文件中:

main

这两个文件都被排除。如何匹配

.gitignore?

中文件名末尾的模式

为未来的读者编辑:我发现我可以将

!main.*
添加到 gitignore
但这并不能完全回答我的问题:也许有一种更干净的方法可以达到相同的结果,也许可以使用类似
main^

之类的东西
git gitignore
1个回答
0
投票

我明白了

$ cd `mktemp -d`; git init
$ echo main >.gitignore
$ >main; >main.c
$ git add -n .
add '.gitignore'
add 'main.c'

所以我不知道你还想做什么

两个文件都被排除

但无论发生什么,我想我完全按照你的描述做了,但没有得到这些结果。

也许

main
是一个目录?目录排除会立即排除整个内容,无论名称如何,这就是要点:告诉 git 甚至不要在那里查找要跟踪的新文件。如果是这种情况,您可以说
!main/
来停止名为
main
的目录被整个删除。

无论如何,尝试执行

git ls-files -oc | git check-ignore --stdin -v
来查看排除所有排除文件的确切原因,并将
-n
标志添加到 checkignore 以查看所有未忽略的文件,显示之前停止的任何显式不排除规则匹配的。

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