2013-08-29 59 views
0

我有一个目录,有许多子目录,深度可变,始终在增长。我只想保留一个特定的文件。我该如何告诉.gitignore忽略来自这些目录和子目录的所有文件,除了那一个?Gitignore排除整个目录树中文件的所有外观

准确地说,我拥有的是一个报告目录,我每天存储很多报告。每个新的报告都会创建一个新的子目录,其中包含变量名称,其中包含文件和子目录。我只是想保持文件的 '富'

  • REPORTDIRECTORY
    • MONTH_A
      • DAY_HOUR_OF_REPORT
        • file_1
        • file_2
        • file_N
        • ANOTH ER_DIRECTORY_I_COMPLETELY_IGNORE
      • DAY_HOUR_OF_REPORT
        • file_1
        • file_2
        • file_N
        • ANOTHER_DIRECTORY_I_COMPLETELY_IGNORE
    • MONTH_乙
      • DAY_HOUR_OF_REPORT

等等

我已经尝试了很多东西。最后的地方

/REPORTDIRECTORY/**/* 
!foo 

/REPORTDIRECTORY/**/* 
!/REPORTDIRECTORY/**/foo 

没有成功。

我开始相信我说具有双重通配符麻烦,因为如果我把gitignore:

/REPORTDIRECTORY/**/ANOTHER_DIRECTORY_I_COMPLETELY_IGNORE/ 

REPORTDIRECTORY/**/ANOTHER_DIRECTORY_I_COMPLETELY_IGNORE 

这个 'ANOTHER_DIRECTORY_I_COMPLETELY_IGNORE' 也是不可忽视:(

我对Windows使用Git版本1.8.1.2-preview20130201我使用SmartGit作为GUI(版本4.5),但我认为GUI应用ld不重要,因为.gitignore直接由Git解析。Git manual page表明双星号通配符应该工作。

我做错了什么或者是否是.gitignore解析器?

回答

0

是否有机会需要更新到最新版本?根据website**/模式仅支持从1.8.2开始。

0

忽略版本控制文件

在仓库的一些文件,这些文件版本(即他们不能 混帐忽略不计),经常改变,但是很少犯。通常这些 是编辑的各种本地配置文件,但不应该在上游提交 。

Git让你忽略这些文件,假设它们没有改变。这个 是通过运行git update-index --assume-unchanged path/to/file.txt命令完成的。一旦这样标记文件,git将会完全忽略该文件的任何更改;他们不会在 运行git status或git diff时出现,他们也不会被提交。

要让git再次跟踪文件,只需运行git update-index --no-assume-unchanged path/to/file.txt。

这是直接从GitHub的website

然后你可以提交一个文件,根据需要,偶尔。并且仍然忽略这些变化。

在您试图部分忽略的文件夹中增加一个.gitignore文件,这看起来似乎是一个合理的解决方案。

.gitignoe文件的文件夹中的内容可以很可能只是包括一个条目:

*/ 

如果是被忽略的所有文件夹。

相关问题