git lfs管理大文件

背景

git lfs可用来管理大文件,从而解决文件太大的问题。

添加文件

# 此操作会在.gitattributes文件中添加该大文件的路径和信息,一般是一行
git lfs track bigfile_file_path

# 向仓库添加大文件
git add bigfile_file_path

# 向仓库添加更新后的gitattributes文件
git add .gitattributes

git commit -m "use lfs to track xxx file"

# 可查看所有被lfs 追踪的文件
git lfs ls-files

克隆项目

如果是克隆一个被lfs管理的项目,并想将其推送至一个新的仓库地址,很可能出现的问题是:
1. 文件太大

remote: fatal: pack exceeds maximum allowed size
error: remote unpack failed: unpack-objects abnormal exit

问题1解决法是:

# 分布提交代码,不要一次性推送,对照log的commit逐步的将大文件所涉及的提交拆分开来,
# 一步步提交直至最后的commitId
# 如下命令中,commit id是你拆分开来的本地的commit id
# 分支名为远程仓库的分支名
git push origin <commit id>:refs/heads/<分支名>

2. LFS objects are missing

LFS objects are missing
remote: Resolving deltas: 100% (112/112), done.
remote: GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual “git lfs push --all”.

问题2解决方法是:

# 在git clone 代码之后,一定要执行如下命令
# 该命令会将项目已经删除的大文件也下载下来,而git clone默认只是下载项目最新版本所涉及的大文件
git lfs fetch --all

示例

# 从仓库1下载代码
git clone -b test git:xxxrepo1.git
# 一定要执行,非常重要
git lfs fecth --all
# 切换分支
git checkout -b dev
# 添加新仓库 
git remote add repo2 git:xxxxrepo2.git
# 下载最新代码
git pull repo2 dev:dev
# 接下来逐步拆分commit至repo2: git push -f repo2 <commitId>:refs/heads/<repo2的远程仓库分支名>,
# (参数-f可根据实际情况看是否需要)
git push -f repo2 <commitId>:refs/heads/dev
# 重复执行以上步骤直至最后的commitId即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值