使用.gitignore取消子目录中的特定文件

den*_*nns 12 git gitignore

我有一个问题要让.gitignore做我想做的事.我的文件夹结构如下所示:

assets
??? img
|   ??? thousands
|   ??? of
|   ??? folders
|   ??? KEEP_SOMETHING_IN_THIS_FOLDER
|   |   ??? another
|   |   ??? thousands
|   |   ??? of
|   |   ??? folders
|   |   ??? KEEP_THIS_FILE_1.jpg
|   |   ??? KEEP_THIS_FILE_2.jpg
|   |   ??? KEEP_THIS_FILE_3.jpg
Run Code Online (Sandbox Code Playgroud)

我试着保留三个jpgs.我试过了

/assets/img/*
!/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/
/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/*/
!/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/KEEP_THIS_FILE_*.jpg
Run Code Online (Sandbox Code Playgroud)

Ale*_*yon 10

您需要在指定的文件夹中创建.gitignore文件.在您的情况下"KEEP_SOMETHING_IN_THIS_FOLDER".写下这句话:

/**
/*.jpg
!not_ignore.jpg
Run Code Online (Sandbox Code Playgroud)


Mr.*_*rue 6

you can do like this:

# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
Run Code Online (Sandbox Code Playgroud)

and like:

# exclude /filepath/includes/a.java
/*
!/filepath
/filepath/*
!/filepath/includes
/filepath/includes/*
!/filepath/includes/a.java
Run Code Online (Sandbox Code Playgroud)

by the way If you wanna ignore all jar (*.jar), but wanna exclude

/src/main/webapp/WEB-INF/lib/*.jar

Do this in your .gitignore

# Package Files #
*.jar
# exclude /src/main/webapp/WEB-INF/lib/*.jar
!/src/main/webapp/WEB-INF/lib/*.jar
Run Code Online (Sandbox Code Playgroud)


Tho*_*ger 5

您接近:

/assets/img/*
!/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/

# changed this:
# /assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/*/
# to:
# /assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/*
/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/*
!/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/KEEP_THIS_FILE_*.jpg
Run Code Online (Sandbox Code Playgroud)

您不需要在子文件夹的忽略位置上添加斜杠(第3行)。


Jit*_*ama 5

man gitignore从 *nix 工作站运行并查看该PATTERN FORMAT部分时,我发现以下语句:

  • 一个可选的前缀“!” 这否定了模式;任何被先前模式排除的匹配文件将再次包含在内。如果排除了该文件的父目录,则无法重新包含该文件。出于性能原因,Git 不会列出排除的目录,因此包含文件的任何模式都不起作用,无论它们在哪里定义。在第一个“!”前面放一个反斜杠(“\”)对于以文字“!”开头的模式,例如,“!important!.txt”。

注意粗体部分。在您提出的情况下,您想要取消忽略属于您忽略的目录的子目录下的文件,“取消忽略”!运算符将不起作用。相反,您必须更具体地使用忽略模式。

试试这个尺寸:

/assets/img/*/*
!/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/KEEP_THIS_FILE*.jpg
Run Code Online (Sandbox Code Playgroud)