我试图使用带有否定模式的.gitignore文件(以!开头的行),但它没有按照我期望的方式工作.
作为一个最小的例子,我有以下目录结构:
C:/gittest
-- .gitignore
-- aaa/
-- bbb/
-- file.txt
-- ccc/
-- otherfile.txt
Run Code Online (Sandbox Code Playgroud)
在我的gitignore文件中,我有这个:
aaa/
!aaa/ccc/
Run Code Online (Sandbox Code Playgroud)
我的理解(基于这个doc页面)是文件aaa/ccc/otherfile.txt不应该被忽略,但实际上git忽略了aaa下的所有内容.
我误解了这句话:"一个可选的前缀!否定了模式;先前模式排除的任何匹配文件将再次被包括在内."?
顺便说一下,这是在Windows上使用msysgit 1.7.0.2.
Cas*_*bel 136
我认为你真正想做的是:
aaa/*
!aaa/ccc
Run Code Online (Sandbox Code Playgroud)
你告诉它"不要看aaa",所以它甚至从未检查过这条道路aaa/ccc.如果使用通配符,它仍会读取内容aaa,则每个条目都匹配通配符并被忽略,除非aaa/ccc将其放回.
小智 17
如果您想要排除其中的所有内容aaa,但包含aaa/ccc其中的所有内容,则应使用:
aaa/*
!aaa/ccc
!aaa/ccc/*
Run Code Online (Sandbox Code Playgroud)
第一行告诉git忽略下面aaa的第二行,第二行告诉它不要忽略aaa/ccc实际"启用"第三行的文件夹,然后告诉它不要忽略下面的所有内容aaa/ccc.
如果任何人在git status运行git update-index之前仍然没有看到新的未被忽略的项目,可以帮助 git 查看更改(至少在 gitbash 的 1.9.x 版本中)。
| 归档时间: |
|
| 查看次数: |
26925 次 |
| 最近记录: |