如何将带有LFS对象的git仓库推送到gitlab
笔者最近碰到一个开源项目想学习下,按照以往的套路,先clone到本地,然后push到gitlab,结果冒出这么一个报错:
git push
Enumerating objects: 8563, done.
Counting objects: 100% (8563/8563), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2614/2614), done.
Writing objects: 100% (8563/8563), 4.40 MiB | 19.35 MiB/s, done.
Total 8563 (delta 5526), reused 8563 (delta 5526)
remote: Resolving deltas: 100% (5526/5526), done.
remote: GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual "git lfs push --all".
To http://192.168.1.10:8083/xxx/xxx.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'http://192.168.1.10:8083/xxx/xxx.git'
用chatgpt plus + deep research试了下也没跑通,这个有时候好用,有时候不行,有点心疼每月20美金的费用值不值。
后来改用另外一个免费的AI, WOC,跑通了,可能是我之前弄来弄去搞复杂了,其实很简单,这里做下记录以备以后碰到类似的项目能节约时间。
第一步 git lfs clone
git lfs clone https://github.com/xxx/xxx.git
第二步 git lfs fetch
git lfs fetch --all会出现类似下面的消息
fetch: 5 object(s) found, done.
fetch: Fetching all references...或者你也可以fetch指定的分支git lfs fetch origin main响应消息
fetch: Fetching reference refs/heads/main
第三步 确保gitlab启用LFS
登录gitlab后台修改文件 /etc/gitlab/gitlab.rb设置LFS启用
gitlab_rails['lfs_enabled'] = true重新配置GitLab
sudo gitlab-ctl reconfigure
确保要推送的gitlab仓储的LFS启用,一般默认是启用的
第四步 git remote add
git remote add gitlab http://192.168.1.10:8083/xxx/xxx.git
第五步 git push
git push gitlab --all
第五步 git lfs push
git lfs push gitlab --all会出现类似下面的消息Locking support detected on remote "gitlab". Consider enabling it with:$ git config lfs.http://192.168.1.10:8083/xxx/xxx.git/info/lfs.locksverify true
Uploading LFS objects: 100% (5/5), 130 MB | 0 B/s, done.
搞定!