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

合并Fork仓库后克隆Git LFS遇Smudge/404错误求助

问题解析与解决方案

核心原因

GitLab合并Fork仓库的MR时,默认不会自动将Fork仓库中的LFS对象同步到目标主仓库的LFS存储。主仓库的Git LFS指针指向的对象仅存在于Fork仓库的LFS存储中,Git LFS客户端默认只会向主仓库的LFS端点请求对象,因此触发404/Smudge错误;而GitLab网页支持跨仓库读取关联Fork的LFS对象,所以能正常下载。


本地额外配置方案

临时指定LFS对象来源

克隆主仓库后,将LFS端点指向原Fork仓库,让客户端从Fork拉取LFS对象:

git config remote.origin.lfsurl https://gitlab.com/myProjects/lfsTestRepo.git/info/lfs
git lfs pull

长期开启跨仓库LFS访问

通过配置允许Git LFS客户端根据指针中的原始仓库信息拉取对象:

# 全局配置(适用于所有仓库)
git config --global lfs.fetchinclude "*"
git config --global lfs.fetchexclude ""

# 仅当前仓库配置
git config lfs.fetchinclude "*"
git config lfs.fetchexclude ""

GitLab端设置

启用LFS对象自动同步(GitLab 13.0+)

进入主仓库的设置 → 仓库 → LFS,开启"Allow LFS objects to be fetched from remote projects"选项。该设置允许主仓库的Git LFS客户端自动从关联Fork拉取LFS对象,无需本地额外配置。

手动同步LFS对象到主仓库

若无法启用自动同步,可手动将Fork的LFS对象推送到主仓库:

# 克隆主仓库并添加Fork为远程
git clone https://gitlab.com/masterProjects/lfsTestRepo.git
cd lfsTestRepo
git remote add fork https://gitlab.com/myProjects/lfsTestRepo.git

# 拉取Fork的LFS对象并推送到主仓库
git lfs fetch fork
git lfs push origin --all

GitLab LFS兼容说明

GitLab对LFS的支持稳定,上述问题并非兼容问题,而是默认安全策略导致:默认不自动复制Fork的LFS对象到主仓库,避免未经授权的对象流入。通过上述配置或手动同步即可解决该场景下的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:05:17