如何移除仓库中的Git LFS但保留其追踪的文件?
移除仓库中的Git LFS并保留追踪文件的解决方案
核心问题
你之前的操作仅取消了LFS的追踪配置,但仓库提交记录里的LFS指针文件(而非实际文件)仍存在,远程仓库的LFS存储对象也未清理,因此仍触发配额限制。需将所有LFS指针替换为实际文件内容,再彻底清理LFS相关配置与远程存储。
操作步骤
1. 拉取所有LFS对象到本地
确保本地拥有所有被LFS追踪的实际文件,避免替换指针时缺失内容:
git lfs fetch --all
2. 将LFS指针替换为实际文件
用LFS命令把仓库中的指针文件替换为本地已下载的真实文件:
git lfs checkout
3. 清理LFS配置规则
- 卸载LFS工具:
git lfs uninstall
- 直接删除
.gitattributes中所有LFS相关的行(无需注释,彻底移除追踪规则),然后提交更改:
git add .gitattributes git commit -m "Remove Git LFS tracking rules"
4. 重新提交实际文件
将已替换为真实内容的文件重新提交,确保Git识别为普通文件:
git add --renormalize . git commit -m "Replace LFS pointers with actual file content"
--renormalize参数用于确保Git正确处理文件内容,避免文件模式异常。
5. 清理远程LFS存储(释放配额关键)
- 先推送本地更改到远程仓库:
git push
- 删除远程仓库中无引用的LFS对象(需仓库操作权限):
git lfs prune --remote
此命令会移除远程仓库中未被任何提交引用的LFS对象,释放配额空间。
6. 验证结果
推送完成后,检查远程仓库文件是否为实际内容,并查看GitHub存储配额页面确认LFS占用已下降。
额外说明
- 若仓库存在多分支,需对每个分支重复上述步骤,确保所有分支都移除LFS指针。
- 若需彻底清理历史提交中的LFS指针,可使用
git filter-repo重写仓库历史,但这会修改提交哈希,需通知团队成员重新克隆仓库。
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

