You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅在分支HEAD中存储最新git-lfs文件以节省存储空间

解决Git LFS空间不足的Docker镜像存储工作流

方案一:临时分支+Squash合并(无需强制推送)

  • 每次更新镜像时,从master拉取最新代码创建临时分支:git checkout -b temp-image-build
  • 构建Docker镜像并导出为tar包,确保Git LFS已跟踪该文件(未设置过的话先执行git lfs track "*.tar")
  • 提交并推送临时分支:git add . && git commit -m "Build latest Docker image" && git push origin temp-image-build
  • 切换回master分支:git checkout master
  • 用Squash合并将临时分支的镜像提交合并到当前master的最新提交中:git merge --squash temp-image-build
  • 提交合并后的内容:git commit -m "Update Docker image to latest version"
  • 正常推送master分支:git push origin master(完全不需要强制推送)
  • 清理本地和远程临时分支:git branch -D temp-image-build、git push origin --delete temp-image-build
  • 清理本地废弃LFS对象:git lfs prune;若有权限,可在远程仓库后台开启自动清理,或联系管理员执行远程LFS清理

方案二:安全强制推送(仅覆盖最新提交)

如果不想用临时分支,直接在master上操作的话,可采用这种更安全的强制推送方式:

  • 先拉取最新master代码:git pull origin master --rebase
  • 更新Docker镜像tar包后,覆盖最后一次提交:git add . && git commit --amend --no-edit
  • 用--force-with-lease推送,该命令会检查远程master是否与本地拉取的版本一致,避免误覆盖他人提交:git push origin master --force-with-lease
  • 同样清理废弃LFS对象:git lfs prune

核心效果

两种方案都能确保只有master分支的HEAD提交保留有效的Docker镜像LFS指针,历史提交中的旧指针会被丢弃,对应的旧镜像也会通过LFS清理操作从存储空间中移除,完美解决空间不足的问题。

内容的提问来源于stack exchange,提问作者Simon Dubek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:08:18