Gitignore除了子文件夹以外的所有内容(包含每个内容)?

时间:2017-06-15 12:59:13

标签: git gitignore

我想忽略所有内容,除了特定的子文件夹(及其所有内容!)。我从可能的重复问题中尝试了解决方案而没有任何成功。

我需要一些简单的东西:

UnregisterPropertyChangedCallback

但这不起作用

3 个答案:

答案 0 :(得分:4)

您的.gitignore几乎可以正常工作,但原因并不简单:第一条规则(*)告诉Git忽略存储库根目录中的每个文件和目录。 Git尊重它并忽略所有内容,包括That目录及其内容。 " unignore"以下规则与That子目录中的任何内容都不匹配,因为That目录与其内容一起被忽略,并且它们不起作用。

为了告诉Git不要忽略深层嵌套子目录中的文件和目录,你必须编写ignore和unignore规则,让它首先到达封闭的子目录,然后添加你想要的规则。

您的.gitignore文件应如下所示:

### Ignore everything ###
*

# But do not ignore "That" because we need something from its internals...
!That/

# ... but ignore (almost all) the content of "That"...
That/*
# ... however, do not ignore "That/Very" because we need to dig more into it
!That/Very/

# ... but we don't care about most of the content of "That/Very"
That/Very/*
# ... except for "That/Very/Folder" we care
!That/Very/Folder/
# ... and its content
!That/Very/Folder/*

答案 1 :(得分:3)

*
!*/
!That/Very/Folder/**
!Also/This/Another/Folder/**

忽略所有内容,允许子文件夹(!),然后允许特定文件夹内容(包含无限子文件夹)。

致@Jepessen的中间部分,使其发挥作用。

答案 2 :(得分:1)

  

我想忽略一切

将文件夹添加到gitignore

  

除了特定的子文件夹(及其所有内容!)。

强制文件夹添加到存储库

git add -f folder

编辑:

例如,当我需要保留日志文件夹而不是其内容时,我使用此解决方案。通常,我认为永远不会添加文件夹的内容。通常我只使用path/to/folder/.gitkeep选项添加-f文件。