使用.gitignore子目录中的Unignore特定文件
我有个问题要解决。我想做什么就做什么。我的文件夹结构如下所示:使用.gitignore子目录中的Unignore特定文件,git,gitignore,Git,Gitignore,我有个问题要解决。我想做什么就做什么。我的文件夹结构如下所示: assets ├── img | ├── thousands | ├── of | ├── folders | ├── KEEP_SOMETHING_IN_THIS_FOLDER | | ├── another | | ├── thousands | | ├── of | | ├── folders | | ├── KEEP_THIS_FILE_1.jpg | | ├─
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
我试着保留三个JPG。我试过了
/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文件。在您的案例中的“将某物保存在这个文件夹中”。并写下以下几行:
/**
/*.jpg
!not_ignore.jpg
首先提交此.gitignore
文件,然后尝试提交文件。但是,如果您的文件已经被暂存(跟踪),请尝试使用git rm--cached来缓存这些文件。您已经接近:
/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行)不需要在ignore上使用尾随斜杠。从*nix工作站运行
man gitignore
时,查看模式格式
部分,我发现以下语句:
- 可选前缀“!”否定模式;任何匹配的文件 被先前模式排除的将再次被包括它 如果某个文件的父目录为,则无法重新包含该文件 文件被排除。Git没有列出被排除的目录 性能原因,因此包含的文件上的任何模式都没有 效果,无论它们在何处定义。在空格中加反斜杠(\) 对于以文字“!”开头的模式,第一个“!”的前面,用于 示例“!important!.txt”
代码>操作员将不工作。相反,您必须更具体地使用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),但想排除
/src/main/webapp/WEB-INF/lib/*.jar
在.gitignore中执行此操作
# Package Files #
*.jar
# exclude /src/main/webapp/WEB-INF/lib/*.jar
!/src/main/webapp/WEB-INF/lib/*.jar
虽然这是一种解决方案,但对于OP的要求,这不是必需的。@denns,首先提交这个.gitignore文件,然后再试一次。提交也没有帮助,我git添加了-f文件,但在all@denns我想你的文件已经被转移(跟踪)了。尝试git rm--cached
这些文件。