Git配置:如何递归忽略点开头文件夹,排除自带.gitignore的?
实现递归忽略点开头文件夹,排除自带.gitignore的目录
你可以通过以下.gitignore规则组合实现需求,核心思路是先全局忽略所有点开头的文件夹,再反向排除那些包含.gitignore文件的目录,同时避免误删Git自身的仓库目录:
# 递归忽略所有以点开头的文件夹(含各级子目录) **/.* # 排除带.gitignore的点开头文件夹内的.gitignore文件(让Git能识别到它) !**/.*/*.gitignore # 排除带.gitignore的点开头文件夹本身(不再忽略该目录) !**/.* # 强制保留Git仓库核心目录,避免被误忽略 !.git/
规则详解
**/.*:用递归通配符**匹配所有层级的子目录,.*/会匹配所有以点开头的文件夹,将它们加入忽略列表。!**/.*/*.gitignore:反向排除规则,告诉Git不要忽略这些点开头文件夹里的.gitignore文件——因为如果文件夹被整体忽略,Git不会扫描其内部任何文件,必须先让Git能看到这个配置文件。!**/.*:再次反向排除,让Git不再忽略那些带有.gitignore的点开头文件夹,这样Git就会读取该目录下开发者预设的.gitignore规则。!.git/:专门排除.git目录,防止全局规则误忽略Git仓库的核心文件。
注意事项
- 规则顺序不能乱:必须先写全局忽略规则,再写反向排除规则,否则排除规则会被忽略规则覆盖,无法生效。
- 若之前已经将某个点开头文件夹提交到Git仓库,需要先执行
git rm -r --cached <目标文件夹路径>取消Git对它的追踪,之后新的.gitignore规则才会生效。 - 该规则会覆盖所有层级的子目录,不管是根目录下的
.idea,还是子项目里的.mypy_cache,只要带有.gitignore就会被排除,否则会被忽略。
内容的提问来源于stack exchange,提问作者Hyperplane
相关产品推荐
相关产品推荐

