我有以下.gitignore文件
*.pyc
project/app/dist/*
project/bin/*
project/etc/*
project/var/*
!README.txt
Run Code Online (Sandbox Code Playgroud)
到目前为止这么好,我的大多数README.txt文件都没有被忽略,就像我希望它发生的那样除了project/ect/downloads/README.txt.那个文件被忽略了.为什么是这样?我该如何解决这个问题?
如果我没记错的话,我可以简单地手动将它添加到我的项目中,但是我想知道我在忽略文件时做错了什么.
Chr*_*sen 16
Git不会搜索project/etc/downloads/任何文件,因为您已将其配置为忽略project/etc/*."未锚定" !README.txt模式仅适用于否定将被搜索的目录中的条目排除(即,本身未被排除的目录).
如果你排除project/etc/,Git永远不会搜索那个目录,所以否定的排除项永远不会适用于它的内容(甚至不是那么明确的!project/etc/important-file! - 这可能被视为一个错误?).
但是,如果排除project/etc/*,Git将搜索该目录,并且否定排除项可以应用于其内容.一个人可能会意识到第二个模式将始终匹配所有文件,并为两个模式分配相同的含义,但Git,但Git以不同的方式对待它们.
你可能会考虑project/etc/并project/etc/*指出同样的事情,但是Git以不同的方式对待它们,因为它没有"意识到"第二个将匹配目录中的所有内容.
因此,要获得!README.txt申请,projects/etc/downloads/您必须取消该目录的签名,但在该!README模式之前忽略其内容:
project/etc/*
# "unignore, but ignore the immediate contents of" project/etc/downloads
# so that subsequent negated patterns can apply to the immediate contents
!project/etc/downloads/
project/etc/downloads/*
!README.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3381 次 |
| 最近记录: |