将现有Android项目推送至GitHub时大文件被拒、.gitignore不生效咨询
Android项目推送GitHub体积过大问题解答
1. caches、daemon、wrapper三个目录是否可以删除
这三个目录均为Gradle运行过程中自动生成的缓存类文件目录:
- caches存储依赖包缓存、构建过程缓存
- daemon存储Gradle守护进程的运行时数据
- wrapper存储对应版本Gradle的本地分发安装包
三类文件都不属于项目源码的必要组成部分,无特殊保留需求的前提下完全可以直接删除。后续执行项目构建时Gradle会自动重新下载、生成对应文件,不会影响项目的正常运行。
2. .gitignore规则不生效的原因及解决方法
你写的.gitignore规则本身没有问题,不生效的核心原因是:这三个目录已经被提前纳入了Git的版本追踪列表,.gitignore只能作用于从未被Git追踪过的文件/目录,对已经加入追踪记录的内容无效。
你可以按照以下步骤修复:
- 移除Git对三个目录的追踪记录,该操作只会删除Git的追踪索引,不会删除你本地的实际文件:
git rm -r --cached caches daemon wrapper - 在
.gitignore文件中添加如下规则即可(如果只需忽略根目录下的这三个目录,可以在前面加斜杠,写为/caches/、/daemon/、/wrapper/,两种写法都符合要求):caches/ daemon/ wrapper/ - 提交修改后的
.gitignore和移除追踪的变更:git add .gitignore git commit -m "移除Gradle缓存目录追踪,添加ignore规则" - 后续正常执行推送操作即可,此时三个目录不会被纳入提交内容,推送体积仅为你实际项目源码的大小。
如果你的Git提交历史中已经存在这三个大目录的提交记录,可以使用git filter-repo工具清理历史提交中的大文件,也可以直接重新初始化Git仓库后再提交推送,更适合小项目快速处理。
内容的提问来源于stack exchange,提问作者Samantha D'Souza
相关产品推荐
相关产品推荐

