源树.gitignore忽略除特定目录/文件之外的所有内容

时间:2017-11-22 18:33:49

标签: git gitignore atlassian-sourcetree

我见过很多examples并且他们几乎都说同样但是由于某种原因我无法使用SourceTree工作。 我的文件夹结构如下所示,我想忽略除folder3及其所有内容,folder2_3_2_1,所有内容和.ignore文件之外的所有内容。

folder1
folder2
   folder2_1
   folder2_2
   folder2_3
     folder2_3_1
     folder2_3_2
          folder2_3_2_1
             someOtherFile1.php
             someOtherFile12php
             someNewFolder
     folder2_3_3
   folder2_4
folder3
.ignore
somefile.php
somefile2.php

在我的.ignore我有以下

# Ignore everything
/*

#except for
!.gitignore
!folder3/
!folder2/folder2_3/folder2_3_2/

奇怪的是,如果我不忽略任何内容并且我能够在我的非暂存文件面板中看到我的所有文件,如果我右键单击并忽略someOtherFile.php并选择忽略下面的所有内容的选项,它会相反,sourceTree忽略它的文件夹(即folder2_3_2_1)和其中的所有内容!

SourceTree V 2.3.1.0

提前谢谢

1 个答案:

答案 0 :(得分:1)

如果理解了你想要做什么,你必须在文件.gitignore中添加以下几行:

# Ignore everything
*

#except for
!.gitignore
!folder3/
!folder3/*
!folder2/
!folder2/folder2_3/
!folder2/folder2_3/folder2_3_2/
!folder2/folder2_3/folder2_3_2/*
!folder2/folder2_3/folder2_3_2/*/*

这是因为你必须引用目录和内容。

详细

folder3

所以,当你写

!folder3/

你是说要考虑folder3,而不是它的内容,因为空目录没有版本化......它没用了

你必须写

!folder3/
!folder3/*

如果folder3中有子目录,则必须为每个级别添加一行:

!folder3/*/*
!folder3/*/*/*

等。等

文件夹2 / folder2_3 / folder2_3_2 /

再次出现:

!folder2/folder2_3/folder2_3_2/

你必须写

!folder2/folder2_3/folder2_3_2/
!folder2/folder2_3/folder2_3_2/*

和子文件夹

!folder2/folder2_3/folder2_3_2/*/*

但这还不够,因为你不得不说不要忽视:

!folder2/
!folder2/folder2_3/