Git忽略除特定子目录

时间:2016-03-16 13:58:49

标签: git gitignore

我已经看过一些关于如何忽略除某些子目录之外的所有例子的例子。

# Ignore Everything
foo/*
# Include sub directory
!foo/ccc/*

我也尝试过:

# Ignore Everything
foo/*
# Include sub directory
!foo/ccc/

更新

因此上面的代码可行,但是尝试排除另一个目录中的目录不起作用。它仅适用于父目录和子目录。

# Ignore Everything
foo/*
# Include sub directory
!foo/ccc/aaa/ddd/ 

在我的gitingore中包含此内容后,我运行了git add --all,我在git status中看不到任何文件。

所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您必须取消忽略要取消签名的路径中的每个目录。以下内容适用于您的情况:

# Ignore everything in foo
foo/*
# Except the ccc subdir
!foo/ccc

# Ignore everything in ccc subdir
foo/ccc/*
# Except the aaa subsubdir
!foo/ccc/aaa

# Ignore everything in aaa subsubdir
foo/ccc/aaa/*
# Except the ddd subsubsubdir
!foo/ccc/aaa/ddd

忽略规则在/*中结束非常重要,因为它告诉git忽略文件夹中的所有内容,而不是文件夹本身,允许我们为特定子目录的忽略规则添加例外。