之前项目的仓库需要被迁移到另一个仓库,在迁移的过程中,我上传分支代码,会一直报错
remote: - 2cb2edcc14e6c8613c988eec5d529652bd735740 (215 MiB)
remote: To resolve this error, you must either reduce the size of the above blobs, or utilize LFS.
remote: You may use "git ls-tree -r HEAD | grep $BLOB_ID" to see the file path.
remote: Please refer to https://gitlab.com/help/user/free_push_limit and
remote: https://gitlab.com/help/administration/settings/account_and_limit_settings
remote: for further information.
To gitlab.com:XXX/iOS_Test.git
! [remote rejected] 1.0.4 -> 1.0.4 (pre-receive hook declined)
error: failed to push some refs to 'gitlab.com:XXX/iOS_Test.git'
发现问题
文件过大是我无法上传代码的主要原因,GitLab 会拒绝接收超过 100MB 的文件,当然我实在不记得我从哪整的这么大的.a,我是先尝试在当前分支的版本做了删除大文件的操作之后,还是报错,后来发现尽管当前分支已经删除,但是git历史记录仍然是有该文件的。
解决问题
要解决这个问题,需要从Git历史记录中彻底删除这些大文件,并将它们改为使用Git LFS进行管理。
1.安装Git LFS
- 前往 https://github.com/git-lfs/git-lfs/releases 下载LFS版本
- tar -zxvf git-lfs-darwin-amd64-vX.X.X.tar.gz
cd git-lfs-darwin-amd64-vX.X.X
sudo ./install.sh - 初始化Git LFS git lfs install
- (假设我们要查看大文件所在的路径)git ls-tree -r HEAD | grep 2cb2edcc14e6c8613c988eec5d529652bd735740
2.清理大文件
- 下载BFG Repo-Cleaner:
curl -L https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar -o bfg.jar - 使用BFG Repo-Cleaner清理大文件
java -jar bfg.jar --strip-blobs-bigger-than 100M - 清理历史记录
git reflog expire --expire=now --all
git gc --prune=now --aggressive - 推送 git push origin
好啦,代码上传成功啦