.gitignore 通配符后缀排除与否定的子文件夹

黑巴姆

我有一个 .gitignore 是这样的:

*.png
*.jpg
*.gif
!0/*.png
!0/*.jpg
!0/*.gif

我想忽略所有文件夹中的所有图像文件(.png、.jpg、.gif),但不在文件夹中/0/不应忽略此文件夹中的所有图像文件。

我尝试使用上面的 .ignore 文件,但它不起作用,因为图像文件/0/仍然被忽略。如何正确写这个?

迪特里希·埃普

忽略模式:

!0/*.png

意思是“不要忽略直接位于名为 0 的文件夹中的任何*.png文件”。所以这将包括,它会包括,但它会排除0/abc.png1/0/def.png0/1/ghi.png

如果要包括*.png文件夹 0 下的所有内容,有两种方法可以做到这一点。

您可以使用以下模式:

*.png
!/0/**/*.png

**模式匹配任何一系列的子目录,包括根目录。模式开始于/意味着模式必须从当前目录开始匹配。因此,这将包括0/abc.png0/subdir/def.png,和0/subdir/ghi/jkl.png它将排除abc.png1/abc.png

或者,你可以创建一个文件.gitignore

*.png

然后您可以创建另一个文件,0/.gitignore,其中包含:

!*.png

这个比较明显一点,效果完全一样。

演示

这是基本*.png规则,它忽略所有*.png文件:

$ git init
Initialized empty Git repository in .../.git/
$ mkdir -p 0/1
$ touch img.png 0/img.png 0/1/img.png
$ cat >.gitignore
*.png
$ git add -n .
add '.gitignore'

这是您拥有的规则,其中包括*.png名为 的任何目录中的任何内容0

$ cat >.gitignore
*.png
!0/*.png
$ git add -n .
add '.gitignore'
add '0/img.png'

这是固定模式:

$ cat >.gitignore  
*.png
!/0/**/*.png
$ git add -n .
add '.gitignore'
add '0/1/img.png'
add '0/img.png'

这是替代方案:

$ cat >.gitignore
*.png
$ cat >0/.gitignore
!*.png
$ git add -n .
add '.gitignore'
add '0/.gitignore'
add '0/1/img.png'
add '0/img.png'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.gitignore排除文件夹,但包括特定的子文件夹

Gitignore不忽略子文件夹

子文件夹的 .gitignore 应该覆盖

.gitignore,排除文件夹中的所有文件...,但保留其中带有.gitkeep的那些子文件夹?

.gitignore不排除任何文件和文件夹

Gitignore排除子文件夹(带有** /模式),除了特定的一个

排除所有内容,但gitignore中的某些子文件夹无法正常工作

如何使用 gitignore 排除范围内的文件夹

如何包括父.gitignore排除的文件夹?

.gitignore-忽略文件夹排除的困难

.gitignore如何排除特定文件夹的所有直接文件,但包括该文件夹的所有子文件夹?

.gitignore排除特定文件

.gitignore 排除文件夹,除非它在父文件夹匹配模式中

如何从.gitignore子文件夹中排除所有扩展名(但不包括PHP和JS)?

gitignore不忽略文件夹

Gitignore不忽略文件夹

.gitignore不忽略文件夹

.gitignore 中的隐藏文件夹

忽略 repo 中的文件夹 gitignore

Gitignore用于文件夹和子文件夹中的所有文件

.gitignore不适用于已忽略文件夹的子文件夹

如何使用.gitignore忽略文件夹中的所有子文件夹

gitignore多个文件夹中的给定文件夹

'!' 不排除.gitignore中的文件

.gitignore中排除的文件夹中的文件出现在提交中

gitignore除了子子文件夹中的文件以外的所有文件

通配符更改后的.gitignore斜杠排除行为

我应该在.gitignore中排除Aurelia脚本文件夹吗?

git从gitignore规则中排除特定文件夹及其内容