我有一个 .gitignore 是这样的:
*.png
*.jpg
*.gif
!0/*.png
!0/*.jpg
!0/*.gif
我想忽略所有文件夹中的所有图像文件(.png、.jpg、.gif),但不在文件夹中/0/
。不应忽略此文件夹中的所有图像文件。
我尝试使用上面的 .ignore 文件,但它不起作用,因为图像文件/0/
仍然被忽略。如何正确写这个?
忽略模式:
!0/*.png
意思是“不要忽略直接位于名为 0 的文件夹中的任何*.png
文件”。所以这将包括,它会包括,但它会排除。0/abc.png
1/0/def.png
0/1/ghi.png
如果要包括*.png
文件夹 0 下的所有内容,有两种方法可以做到这一点。
您可以使用以下模式:
*.png
!/0/**/*.png
该**
模式匹配任何一系列的子目录,包括根目录。模式开始于/
意味着模式必须从当前目录开始匹配。因此,这将包括0/abc.png
,0/subdir/def.png
,和0/subdir/ghi/jkl.png
。它将排除abc.png
和1/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] 删除。
我来说两句