gpt4 book ai didi

gitignore 匹配子目录中带有前缀和后缀的文件

转载 作者:太空狗 更新时间:2023-10-29 14:15:55 28 4
gpt4 key购买 nike

我喜欢只跟踪以“es”开头并以*.h 或*.m 结尾的文件

所以我尝试了这个:

#exlude all
*
#except
!es*.h
!es*.m

#exlude all
*
#except
!*/es*.h
!*/es*.m

但对子目录中的文件都不起作用

最佳答案

当您忽略所有内容 (*) 时,您将忽略文件夹,即使它们也有内容,因为 * 匹配所有内容。

如果您忽略 某些内容,那只会匹配根目录的文件。如果您需要取消忽略目录,则需要明确说明(即 !mydir/)。但这会忽略该目录的所有内容,因此您必须为该目录的内容重新定义忽略/忽略模式。即使您这样做了,如果您还没有将目录添加到索引中,您也不会在 git status 中看到它。

你的案子可以很容易地解决,但模式会颠倒。
你基本上想要做的是忽略一切

  • 不以es 开头
  • 不以.h.m结尾。

那么做:

$ ls -a
. .. .git .gitignore a b blah c ebar.m esfoo.h esfoo.m sbar.m
$ ls -a blah/
. .. a b c ebar.m esfoo.h esfoo.m sbar.m
$ git status -s
?? blah/
?? esfoo.h
?? esfoo.m
$ git status -s blah/ # matching files ignored and also ignored on `git add`
?? blah/esfoo.h
?? blah/esfoo.m
$ git add .
$ git status -s # only wanted files were added
A blah/esfoo.h
A blah/esfoo.m
A esfoo.h
A esfoo.m
$ cat .gitignore # the ignore pattern -- ignore
[^e]* # everything that doesn't start with 'e'
e[^s]* # and is not followed by an 's'
*.[^hm] # and does not end with '.h' or '.m'
!/blah # uningore the wanted subdirs

正如您在上一个命令中看到的,我已经反转了您的模式以忽略所有不以 e 开头且后跟 s 和不以 .h.m 结尾,也未忽略目录。尽管目录有更多内容,但由于与模式匹配而被忽略,只添加了需要的部分。

编辑:已更新

关于gitignore 匹配子目录中带有前缀和后缀的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8850203/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com