2014-12-04 112 views
1

鉴于我的回购中存在以下冗长的文件夹结构,并且想象所有这些文件夹都有一个子文件夹和子子文件夹,子子文件夹等,以及等等(只显示前两个层次):在这种特殊情况下编写.gitignore的最佳做法

jim_folder > 
     name.txt 
     sub_jim_folder > 
        sub_name.txt 
        sub_sub_jim_folder > 
          sub_sub_name.txt 
          ..... 

tim_folder > 
     name.txt 
     sub_tim_folder > 
        sub_name.txt 
        sub_sub_tim_folder > 
         sub_sub_name.txt 
         ...... 

amy_folder > 
     name.txt 
     sub_amy_folder > 
        sub_name.txt 
        sub_sub_amy_folder > 
         sub_sub_name.txt 
         ....... 
jerry_folder > 
     name.txt 
     ........ 

基本上,我只想

  • 跟踪jim_folder及其所有子目录,文件中 子目录和所有的子目录和所有文件 之内它,等等。
  • 并且未找到其他目录及其子目录及其下的每个单独文件或目录,即未查询amy_folder,jerry_folder, tim_folder及其中的每个单个文件或目录。

问:

从我的理解,也有在这种情况下写.gitignore 2点的方法:

  1. 忽略回购一切,除了jim_folder及其所有子目录和所有它的子子目录等等。
  2. 明确忽略amy_folder,jerry_foldertim_folder列出它们。

我想看到的解决办法(代码)这两种方法

,因为从逻辑上讲,第一种方法应采用,但似乎我将有很多线路来写,如果jim_folder包含许多sub,sub-sub,sub-sub-sub,.....目录。

另一方面,我不知道如何在第二种方法中编写.gitignore文件,我是否也需要指定那些我想在.gitignore中忽略的文件夹的整个结构?因为那意味着很多和很多线条。

我相信这个问题有一个最佳实践。我想听到他们。

+0

你想跟踪下'jim_folder'的'name.txt'文件,也? – mipadi 2014-12-04 01:04:22

+0

是的。我想跟踪'jim_folder'中的所有内容,并且在'amy_folder','jerry_folder'和'tim_folder'中查找所有内容。一切意味着所有的文件,子目录,子目录,子子目录...... – mynameisJEFF 2014-12-04 01:25:42

回答

2

对于#1:

* 
!.gitignore 
!jim_folder 
!jim_folder/**/* 

对于#2:

amy_folder 
tim_folder 
jerry_folder 

jim_folder/**/*在jim_folder的任何子目录的任何文件相匹配。显然,您还需要为jim_folder创建一个例外。这让我感到惊讶,但它是有道理的,因为jim_folder本身不是jim_folder或其子目录中的东西,所以它不匹配jim_folder/**/*

编辑:它depends on git version - 让我知道这是否适合你。

+0

这里的**是什么意思?我正在使用'git version 2.1.3'。在实现你的解决方案#1后,我只在未跟踪的文件中看到'jim_folder /',但是像'jim_folder/sub_jim_folder/sub_name.txt'和'jim_folder/sub_jim_folder/sub_sub_jim_folder/sub_sub_name.txt'这样的东西仍然没有出现。 – mynameisJEFF 2014-12-04 02:14:03

+0

尝试输入'git add jim_folder' - 通常git不会列出未在'git status'中追踪的目录的内容。对我来说,当我添加'jim_folder'时,我也会得到它的内容。 – fzzfzzfzz 2014-12-04 02:32:07

1

你可以用这个.gitignore模式做到这一点:

/* 
!/.gitignore 
!/jerry_folder 
相关问题