2013-09-21 56 views
24

这是我的文件夹结构:混帐忽略目录中的一切,除了子

data/ 
    .gitignore 
    uploads/ 
     .gitignore 

我想提交它们内部的文件夹,而不是文件。

所以我每个文件夹中添加的.gitignore文件,内容如下:

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 

的问题是,*比赛也目录,所以Git跟踪仅data/.gitignore

回答

29

解决的办法很简单,添加!*/到的.gitignore文件和文件只有在当前文件夹都将被忽略

# Ignore everything in this directory 
* 
# Except this file 
!.gitignore 
# Except folders 
!*/ 
40

请不要误用.gitignore文件。更好地坚持默认的方式继续下去,所以后来的开发人员可以快速进入你的项目。

  1. 添加一个空.gitkeep文件中,您希望在无文件
  2. 排除的文件夹,提交的文件夹,而不是.gitkeep.gitignore文件。

    folder/* 
    !folder/.gitkeep 
    

这忽略了一个文件夹中的所有文件,但不.gitkeep文件。现在该文件夹将仅以.gitkeep文件作为内容进行提交。

+0

什么滥用是什么?他有一个完全合法的需求,并且@ nickel715正在很好地解决它,它的复杂程度与你所提议的相似... – dangonfast

+2

因为.gitignore告诉每一个后来的开发者_他/她必须看看该file_只是为了看到任何被忽略的东西。 '.gitignore'文件也不能设置为主目录以外的任何目录。如果你愿意,那么每个人都必须查看所有子文件夹,看看是否有任何被忽略的东西(并且发现没有什么可忽略的),以查看实际上在回购或部署管道中结束的内容。不要为以后的开发人员增加不必要的复杂性_just,因为你懒惰,不遵守约定。 – kaiser

+1

仍然忽略子目录。 -1 – CommaToast

-4

试试这个:

*.* 
!.gitignore 
!*/* 
+0

这对文件名中没有点的文件不起作用http://pastie.org/10807907 – nickel715