git 忽略文件夹中的所有内容,但包含其所有内容的文件夹除外

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

我正在使用具有此文件夹结构(简化)的 Grav CMS:

/user/
  /pages/
  /plugins/
    /admin/
    /devtools/
    /google-photos/
    .gitkeep

和这个

.gitignore
文件:

/user/plugins
!.gitkeep
!/user/plugins/google-photos/

我想忽略

/user/plugins
中的所有文件和文件夹(带有子文件夹),除了所有
.gitkeep
文件。到目前为止这有效。但现在我想在 git (google-photos) 中包含一个插件及其所有内容。我试过了,但没用:
!/user/plugins/google-photos/

我该怎么做?

我已经访问过这些,但他们无能为力:

git gitignore
1个回答
0
投票

如果忽略

/user/plugins
文件夹,则该文件夹下的任何异常都将被忽略。

那是因为:

一般规则是:

如果文件的父目录被排除,则无法重新包含该文件。

要从 /user/plugins 中排除文件/文件夹(其内容被忽略),您可以这样做:

/user/plugins/*
!/user/plugins/*/
!/user/plugins/.gitkeep
!/user/plugins/google-photos/

意思是:你需要先将文件夹列入白名单,然后才能从 gitignore 文件中排除。

git check-ignore -v -- path/to/file
仔细检查以确认它按预期工作

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