我在这里搜索这个答案,但没有什么相似或我迷路了。我试图排除除一个文件夹以外的所有特定子文件夹。可能我可以手动完成所有路径,但我认为应该有聪明的方法。我的文件结构:
.gitignore
test/
file1
file2
sim_case/
file1
file2
include/
file1
file2
在.gitignore我有:
**/sim_case
这是排除sim_case的所有内容,但我想包含文件夹" include"。我尝试了一些变化,但没有任何效果。
!**/sim_case/include
!**/sim_case/include/
!**/sim_case/include/*
!sim_case/include/
!sim_case/include/
!sim_case/include/*
答案 0 :(得分:3)
我做了很少的研究,似乎只能使用“sim_case”文件夹中的文件排除的最佳选择:
unauthorizedRedirect
这允许具有更复杂的文件结构
**/sim_case/*
!**/sim_case/include
“git status”的结果:
test/sim_case/include
test1/sim_case/include
etc.
答案 1 :(得分:2)
您的第一个假设**/sim_case
是错误的。
test/sim_case/**
!test/sim_case/include/**
从字面上看,您不想忽略完整目录sim_case,而只是忽略sim_case的内容,但include目录中的文件除外。
git status
建议添加sim_case目录。这样做,然后:
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: sim_case/include/.gitignore
new file: sim_case/include/file1
new file: sim_case/include/file2
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
file1
file2
答案 2 :(得分:2)
test/sim_case/*
!test/sim_case/include
忽略目录会立即忽略该目录中的所有内容,并且git扫描会反向忽略条目并进行第一次匹配,因此最后两个条目说“忽略test / sim_case中的所有内容(但仍然扫描目录)”,test / sim_case除外/包括”。