鉴于GitHub doesn't allow to push files larger than 100 MB,不可能将包含大文件的存储库git clone and push导入GitHub企业。推送失败了:
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: File large.zip is 145.00 MB; this exceeds GitHub Enterprise's file size limit of 100.00 MB
(N.B。:有一个repository importer,但这只适用于github.com,需要公开访问您的存储库)
幸运的是,GitHub provides support for storage of files larger than 100MB自2015年4月以来。那么如何将当前存储库与如此大的文件转换为GitHub LFS兼容的存储库,我可以推送到哪里?
答案 0 :(得分:1)
您现在可以使用git lfs migrate
内置命令来评估最适合迁移的文件,并进行实际的历史记录重写。
有关更多详细信息,请参见git-lfs migration tutorial。
答案 1 :(得分:0)
我找到的最简单方法是利用git filter-branch和BFG Repo-Cleaner by rtyley(我使用的版本1.12.12
):
先决条件:您需要安装git lfs
在GitHub Enterprise上创建一个新的存储库。您将外部Git存储库导入到这个新存储库。
克隆要迁移到本地文件夹的存储库:
$ git clone --mirror git@oldgithost:repo
$ cd repo.git
# mirror into a local directory
$ git filter-branch --tree-filter 'git lfs track "*.{zip,jar}"' -- --all
# writes the patterns to lsf-track into .gitattributes
$ java -jar ~/usr/bfg-repo-cleaner/bfg-1.12.12.jar --convert-to-git-lfs '*.zip'
$ java -jar ~/usr/bfg-repo-cleaner/bfg-1.12.12.jar --convert-to-git-lfs '*.jar'
# Convert large files (I couldn't find a one-liner for multiple patterns)
$ git push --mirror https://hostname/ghuser/repo.git
# Pushes the mirror to the new GitHub Enterprise repository
$ cd ..
$ rm -rf repo.git
1 由于I / O很高,使用-d选项将历史记录重写到磁盘上的临时目录是recommended,例如:在tmpfs。