SVN 合并到 Git 时有文件大于 100 M 被限制 Push

,

如果有文件大小大于 100M,GitHub 是会被限制推送到仓库中的,大概率情况会显示下面的错误:

remote: Resolving deltas: 100% (3601/3601), done.
remote: error: Trace: aea1f450da6f2ef7bfce457c715d0fbb9b0f6d428fdca80233aff34b601ff59b
remote: error: See https://gh.io/lfs for more information.
remote: error: File Ektron_Prod/App_Data/GeoIPOrg.dat is 139.96 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.

2024-05-10_12-22-42

对于上面的问题,我们需要使用 LFS 服务。

找到合并信息

运行下面的代命令,找到我们合并后仓库中的合并信息:

 git lfs migrate info --everything --above="100MB"

这个命令将会找到在当前仓库中有那些文件的扩展名大小超过 100MB。

我们得到了下面的输出。

migrate: Sorting commits: ..., done.
migrate: Examining commits: 100% (17/17), done.
*.dat           587 MB    4/13 files    31%

LFS Objects     0 B     0/4517 files     0%

提交处理

从上面的输出中,我们看到了 .dat 文件有超过 100 MB。

下一步,我们需要运行命令对针对这个文件的提交进行处理。

 git lfs migrate import --everything --include="*.dat"

随后,控制台输出:

migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (17/17), done.
  master        7f1f2a07b4dc972e6243984675bd28a3ea15b212 -> 3de8026c759fe6a22199d4df7c640e1bbd1b28e0
migrate: Updating refs: ..., done.
migrate: checkout: ..., done.

使用命令进行提交

运行下面的命令,将本地代码仓库提交到远程:

git push --all origin -u

当然,在这个提交之前,需要设置远程仓库的地址,这个你可以通过修改 config 文件进行修改。

再次确认所有 LFS 文件提交

在合并的过程中,可能会有些大型文件没有提交到 LSF 上面。

所以需要运行下下面的命令,再次确认所有的 LFS 文件被提交。

git lfs push origin --all
1 Like