迁移Azure DevOps Git仓库至GitHub,LFS推送成功但Git推送被拒
解决GitHub拒绝推送(未知LFS对象)的方案
你的核心需求是不迁移LFS对象,之前执行git lfs push new-origin --all反而违背目标——这步是把LFS对象推送到GitHub,但你需要让仓库不再依赖LFS,把原LFS指针替换为实际文件内容。按以下步骤操作:
步骤1:确保本地获取到所有LFS文件
若已完成克隆和LFS拉取,可跳过此步:
git clone <azure devops repo> cd <repo-name> git lfs fetch --all origin
步骤2:将LFS指针转换为普通文件(移除LFS依赖)
用git lfs migrate重写仓库历史,把所有LFS管理的文件替换为实际内容:
# 遍历所有分支,将所有LFS文件转为普通Git文件 git lfs migrate export --everything --include="*"
该命令会修改所有提交记录,把LFS指针替换为对应的实际文件内容,让仓库彻底脱离LFS依赖。
步骤3:清理LFS配置规则
- 打开仓库根目录的
.gitattributes文件,删除所有和LFS相关的配置行(例如*.psd filter=lfs diff=lfs merge=lfs -text这类条目)。 - 提交配置更改:
git add .gitattributes git commit -m "Remove LFS configuration rules"
步骤4:推送到GitHub新仓库
git remote add new-origin <github repo> # 强制推送所有分支(因历史已重写,需覆盖远程分支) git push -u new-origin --all --force # 若需要推送标签,执行: git push new-origin --tags --force
失败原因说明
你之前的操作中,git lfs push虽显示成功,但GitHub接收Git推送时,会校验仓库内的LFS指针是否对应GitHub LFS存储中的对象。而你的目标是不使用LFS,因此必须通过重写历史移除LFS依赖,而非推送LFS对象。
内容的提问来源于stack exchange,提问作者Mickey Cohen
相关产品推荐
相关产品推荐

