忽略Git中同名的所有文件

75

有没有办法使用 git ignore 文件 忽略所有文件名中带有 test 的文件?

我的文件看起来像这样:

 - css/test.css 
 - js/subfolder/test.js 
 - lib/main/sub/test.html

等等还有其他内容。

我希望 git 避免添加或提交任何名为 test 的文件。


иҝҷдёӘй—®йўҳд»ҘеҸҠдҪ еҸҜиғҪеҜ№gitignoreжңүзҡ„е…¶д»–й—®йўҳйғҪеҸҜд»ҘйҖҡиҝҮйҳ…иҜ»man gitignoreжқҘеҫ—еҲ°зӯ”жЎҲпјҢе…¶дёӯеҢ…еҗ«дәҶиҜӯжі•жҸҸиҝ°е’ҢдёҖдәӣе°ҸдҫӢеӯҗгҖӮ - Cascabel
5
没有人喜欢聪明的家伙。 - Bruno Jennrich
3个回答

127

来自Git文档

A leading "**" followed by a slash means match in all directories. For
example, "**/foo" matches file or directory "foo" anywhere, the same
as pattern "foo". "**/foo/bar" matches file or directory "bar"
anywhere that is directly under directory "foo".

对于你的情况:

**/[Tt]est*

它还可以匹配大小写字母。


2
尾随的 * 是什么作用? - clabe45
@clabe45 在完整路径名匹配模式中,两个连续的星号(“”)可能具有特殊含义: 1)前导“”后跟斜杠表示在所有目录中匹配。 2)尾随“/**”匹配内部的所有内容。 3)斜杠后跟两个连续的星号然后是斜杠,匹配零个或多个目录。 4)其他连续的星号被视为无效。 - Alex Kulinkovich
@clabe45,您可以在答案中提供的链接中找到更多详细信息。 - Alex Kulinkovich
3
@clabe45,*是一个特殊字符,表示任意数量(包括零个)的任何字符。因此,在这种情况下,它将匹配test.jsontest.pytestosteronetestimony.txt.jpg.zip甚至只有test。你可以尝试使用带有句点的**/[Tt]est.*,虽然这样做无法捕获像testClient.js这样的文件。 - Mark Peschel

28

使用test*更新.gitignore

另外,阅读此文以获取更多信息。


26
为什么会有这么多投票?正确的似乎是以两个星号开头的**/..。链接也没有提到这两个星号。在基本目录中,test*只忽略了它。 - Timo
@Timo test* 会递归地忽略。如果你在前面加上 /,例如 /test*,那么它只会在基本目录中忽略。 - Eric Zhang
我得到了与Timo相同的结果 - 无论是否有前导斜杠,文件名后跟星号,例如test*,都不会在基本目录之外被忽略。 - Bytech
3
man gitignore中,以两个星号(**)开头并跟着一个斜杠意味着匹配所有目录。例如,"/foo"匹配任何位置的文件或目录"foo",与模式"foo"相同。"/foo/bar" 匹配直接位于目录"foo"下的文件或目录"bar",无论它在什么地方。 - user2453382
这并没有回答问题。 - Qumber

4

尝试将该模式添加到 .gitignore 文件中,模式为 test.*

添加后,使用像你上面提到的一些文件进行 git 状态检查。

如果正常工作,则无需更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接