源代码树 .gitignore 忽略除特定内容之外的所有内容 directories/files

Source tree .gitignore to ignore everything but specific directories/files

我见过很多 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 和 select选择忽略下面的所有内容,它做相反的事情,sourceTree 忽略它的文件夹(即 folder2_3_2_1)和其中的所有内容!

SourceTree V 2.3.1.0

提前致谢

如果明白你想做什么,你必须在文件 .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/*/*

这是因为您必须同时引用目录和内容。

详情

文件夹3

所以,当你写

!folder3/

你是说 folder3 是要考虑的,但不是它的内容,而且由于空目录没有版本控制...它没用

你必须写

!folder3/
!folder3/*

如果folder3里面有子目录,每一层都要加一行:

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

等等等

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_3/folder2_3_2/*/*

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

!folder2/
!folder2/folder2_3/