我有一个问题要让.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
我试着保留三个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
您需要在指定的文件夹中创建.gitignore文件。在您的情况下“KEEP_SOMETHING_IN_THIS_FOLDER”。写下这句话:
/**
/*.jpg
!not_ignore.jpg
首先提交此.gitignore
文件,然后尝试提交您的文件。
但是如果您的文件已经上传(跟踪),请尝试git rm --cached <filePath>
这些文件。
你很亲密:
/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
对于子文件夹(第3行),您不需要忽略尾部斜杠。
当从* nix工作站运行man gitignore
,并查看PATTERN FORMAT
部分时,我发现以下声明:
- 可选前缀“!”否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。如果排除该文件的父目录,则无法重新包含文件。出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用。在第一个“!”前放一个反斜杠(“\”)对于以文字“!”开头的模式,例如“!important!.txt”。
注意粗体部分。在您提供的情况下,如果要取消忽略您忽略的目录的子目录下的文件,“un-ignore”!
运算符将无法运行。相反,您必须更加具体的忽略模式。
试试这个尺码:
/assets/img/*/*
!/assets/img/KEEP_SOMETHING_IN_THIS_FOLDER/KEEP_THIS_FILE*.jpg
你可以这样做:
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
并喜欢:
# exclude /filepath/includes/a.java
/*
!/filepath
/filepath/*
!/filepath/includes
/filepath/includes/*
!/filepath/includes/a.java
顺便说一句如果你想忽略所有jar(* .jar),但想要排除
/双人床/卖弄/Web app/Web-inf/礼拜/*.jar
在.gitignore中执行此操作
# Package Files #
*.jar
# exclude /src/main/webapp/WEB-INF/lib/*.jar
!/src/main/webapp/WEB-INF/lib/*.jar