gitignore忽略整个文件夹下所有文件但保留一些
参考
.gitignore设置跟踪忽略文件夹中文件说的挺全的,可以好好参考
常见错误原因
假设想要忽略所有的名为Win7Release或release的文件夹下除.txt文件之外的文件,很容易写成如下错误形式
*[Rr]elease/
!*[Rr]elease/*.txt
注意:上面已经说过git对于.gitignore配置文件是按行从上到下进行规则匹配的,由于先执行*[Rr]elease/
忽略了所有符合条件的文件夹,接下来执行!*[Rr]elease/*.txt
时找不到名为*[Rr]elease
的文件夹,也就无法追踪这些文件夹下的txt文件了。
所以,在这里,第一步我们不应该忽略这些文件夹,而应该忽略这些文件夹下的所有文件,正确规则添加如下
[Rr]elease/*
!*[Rr]elease/*.txt
!*[Rr]elease/files/
*[Rr]elease/files/*
!*[Rr]elease/files/*.txt
*/bin/*[Rr]elease/*
!*/bin/*[Rr]elease/*.txt
!*/bin/*[Rr]elease/files/
*/bin/*[Rr]elease/files/*
!*/bin/*[Rr]elease/files/*.txt
说明:
- 执行
*[Rr]elease/*
,忽略根目录下符合条件的文件夹下的所有文件 - 执行
!*[Rr]elease/*.txt
,追踪根目录下符合条件的文件夹下的txt文件 - 执行
!*[Rr]elease/files/
,追踪根目录下符合条件的文件夹下的files文件夹 - 执行
*[Rr]elease/files/*
,忽略files文件夹下的所有文件 - 执行
!*[Rr]elease/files/*.txt
,追踪files文件夹下的txt文件
所以这样的做法是不对的,这样并不能忽略target文件下除了jar文件外的所有文件:
target
!target/*.jar
正确做法
target/*
!target/*.jar
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.