我有以下文件夹结构:
public
media
catalog
product
category
private
tmp
var
test
除了media
和catalog/category
private
目录中的所有内容进行gitignore
我正在尝试的gitignore是:
public/media/*
!public/media/catalog/category/
!public/media/private
但它不起作用。添加到category
或private
目录的任何新文件都无法添加。
我可以添加力量,但如果可能,我希望通过gitignore完成
答案 0 :(得分:17)
通常最简单的方法是将.gitignore
放在开始重要的级别。 (如果您拆分存储库或移动目录,这也会有所帮助。)在这种情况下,您需要忽略catalog
文件夹中除private
和public/media
之外的所有内容,因此{{1}放:
public/media/.gitignore
并在/*
!/catalog/
!/private/
放置:
public/media/catalog/.gitignore
重要(以及你的规则不起作用的原因)不要忽略/*
!/category/
目录本身,否则其中的所有内容都将被忽略,即使你不想忽略它的特定部分它的内容。
当然,如果您愿意,可以将其合并为public/media/catalog
级别的单一忽略:
public/media
答案 1 :(得分:2)
在根级别使用一个.gitignore的解决方案
您尝试在存储库的根级别使用一个.gitignore
文件。像你一样,我通常也会集中所有这样的忽视,以保持整洁。在这种情况下,很难,因为"如果排除该文件的父目录,则无法重新包含文件" [source]。
我对这个限制的丑陋解决方案,我也在我的相关答案here和here中探讨:在重新包含所需文件之前,重新包含路径中的所有父目录,同时保留其他通过重新排除这些父目录中的文件。
这样,您的.gitignore
模式将是:
public/media/**
!public/media/private
!public/media/catalog/
public/media/catalog/**
!public/media/catalog/category/