我想排除文件夹reports
的所有直接文件,但包括所有子文件夹。
最初,我不知道此文件夹中有任何子文件夹,因此我按下了reports/*
,以不推送任何自动生成的报告。
但是现在,子文件夹中的所有模板文件在登台区域中都标记为已删除,我想解决此问题:
排除:
包含:
我尝试过:
reports/*
!reports/*/
和
reports/*
!reports/*/*
但它似乎不起作用。
现在排除了reports
文件夹中的所有内容。
但是我只想排除所有直接文件,并包括所有子文件夹(及其内容)。
答案 0 :(得分:1)
.gitignore
文件内容:
/*
!/*/
首先忽略所有内容,然后从最后一个匹配项(所有内容)中递归排除文件夹。
更新
folder/*
!folder/*/
答案 1 :(得分:0)
*请注意,在.gitignore中,您仅排除文件。 *要专注于您的问题,答案是您必须手动导航到每个文件,并保留嵌套路径不变。
但一般来说:
首先,您必须使用.p>开始.gitignore文件
*/**/.gitignore
,以便git不会将此文件共享 并继续
**/target/*
**/*.xml
,其想法是将文件本身包含为
filename.xml
,或使用*作为导航 在xml行中,您要排除所有.xml类型的文件,而在目标中,您要排除该文件包含的所有文件。
希望对您有帮助。
答案 2 :(得分:0)
实际上:
reports/*
!reports/*/
工作。问题出在其他地方。
我将reports/*
推到了分支A,并将其合并到分支B。
因此,所有模板文件仍然存在于分支A中,但在分支B的暂存区域中被标记为已删除。因此,我切换回分支A并在.gitignore文件中添加了!reports/*/
。然后,我第二次将分支A合并到分支B中,并丢弃了分支B暂存区域中的所有内容,现在子文件夹(和内容)又回到了分支B中。