使用gitignore排除特定的子目录

时间:2014-05-19 09:54:00

标签: git gitignore

假设有这样的目录结构:

├── dir1
│   ├── subdir_1        # do not want this
│   │   ├── file1.txt   # and this
│   │   └── file2.txt   # and this
│   ├── subdir_2        # keep me in gitignore
│   └── subdir_3        # keep me as well
└── dir2
    └── subdir4
        ├── file3.txt
        └── file4.txt

我希望gitignore dir1目录中的所有内容,但不想包含subdir_1。 这意味着我想跟踪subdir_1而不是subdir_2 or subdir_3

中的更改

怎么做?

我已经尝试了

/dir1/
!/dir/subdir_1

事实上,我的.gitignore文件更长,而且我在谷歌上搜索该问题的解决方案。他们告诉我先用*忽略所有内容然后否定它。但我更喜欢更简单的解决方案,而不是重构现有的.gitignore

1 个答案:

答案 0 :(得分:1)

要使subdir_1 中的文件不被忽略,请尝试以下操作:

dir1/*
!dir1/subdir_1*
!dir1/subdir_1/*

编辑:根据您的具体结构进行测试:)

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   .gitignore
        new file:   dir1/subdir_1/good_file1.txt
        new file:   dir1/subdir_1/good_file2.txt
        new file:   dir2/subdir4/file3.txt
        new file:   dir2/subdir4/file4.txt