gitignore目录异常无法正常工作

时间:2013-05-21 20:28:35

标签: git gitignore

我有以下文件夹结构:

public
    media
        catalog
            product
            category
        private
        tmp
        var
        test

除了mediacatalog/category

之外,我想对private目录中的所有内容进行gitignore

我正在尝试的gitignore是:

public/media/*
!public/media/catalog/category/
!public/media/private

但它不起作用。添加到categoryprivate目录的任何新文件都无法添加。

我可以添加力量,但如果可能,我希望通过gitignore完成

2 个答案:

答案 0 :(得分:17)

通常最简单的方法是将.gitignore放在开始重要的级别。 (如果您拆分存储库或移动目录,这也会有所帮助。)在这种情况下,您需要忽略catalog文件夹中除privatepublic/media之外的所有内容,因此{{1}放:

public/media/.gitignore

并在/* !/catalog/ !/private/ 放置:

public/media/catalog/.gitignore

重要(以及你的规则不起作用的原因)不要忽略/* !/category/ 目录本身,否则其中的所有内容都将被忽略,即使你不想忽略它的特定部分它的内容。

当然,如果您愿意,可以将其合并为public/media/catalog级别的单一忽略:

public/media

答案 1 :(得分:2)

在根级别使用一个.gitignore的解决方案

您尝试在存储库的根级别使用一个.gitignore文件。像你一样,我通常也会集中所有这样的忽视,以保持整洁。在这种情况下,很难,因为"如果排除该文件的父目录,则无法重新包含文件" [source]。

我对这个限制的丑陋解决方案,我也在我的相关答案herehere中探讨:在重新包含所需文件之前,重新包含路径中的所有父目录,同时保留其他通过重新排除这些父目录中的文件。

这样,您的.gitignore模式将是:

public/media/**
!public/media/private
!public/media/catalog/

public/media/catalog/**
!public/media/catalog/category/