如何向Github/Gitlab推送文件但不将其存入.git目录?
核心结论
原生Git本身无法实现该需求:只要你对文件执行git add、git commit操作,Git必然会将文件的完整快照写入.git/objects目录,占用本地.git存储空间。
你可以通过Git LFS(Git大文件存储)官方扩展实现需求,操作步骤如下:
- 安装Git LFS后,在目标仓库根目录执行
git lfs install开启LFS支持 - 添加大文件追踪规则,例如要追踪所有
.tar后缀的大文件,执行git lfs track "*.tar"即可,生成的.gitattributes文件需要正常提交到仓库 - 后续对大文件正常执行
git add、git commit、git push操作即可。Git会自动将大文件替换为仅数百字节的指针文件存入.git目录,实际大文件会存储在本地LFS缓存和远程LFS存储区,不会占用.git目录的大量存储空间。
如果你的大文件已经被提交到Git历史记录中,可执行git lfs migrate import --include="你的大文件匹配规则"命令,将历史中的大文件批量转换为LFS指针,执行完成后再运行git reflog expire --expire=now --all && git gc --prune=now --aggressive即可彻底清理.git目录中历史大文件占用的空间。
内容的提问来源于stack exchange,提问作者étale-cohomology
相关产品推荐
相关产品推荐

