2

GitHubでは 100 MB を超えるファイルのプッシュが許可されていないため、大きなファイルを含むリポジトリをgit clone して 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

(注:リポジトリ インポーターがありますが、これは github.com 専用であり、リポジトリへのパブリック アクセスが必要です)

幸いなことに、2015 年 4 月以降、GitHubは 100MB を超えるファイルのストレージをサポートしています。では、このような大きなファイルを含む現在のリポジトリを、プッシュできる GitHub LFS 互換のリポジトリに変換するにはどうすればよいでしょうか?

4

2 に答える 2

1

組み込みコマンドを使用git lfs migrateして、移行に最適なファイルを評価し、実際の履歴の書き換えを実行できるようになりました。

詳細については、 git-lfs 移行チュートリアルを参照してください。

于 2018-10-16T11:23:40.420 に答える
0

私が見つけた最も簡単な方法は、git filter-branchrtyley による BFG Repo-Cleanerを利用することでした(私は version を使用しました1.12.12):

  1. git lfs前提条件:インストールする必要があります

  2. GitHub Enterprise で新しいリポジトリを作成します。外部 Git リポジトリをこの新しいリポジトリにインポートします。

  3. 移行するリポジトリをローカル フォルダーにクローンします。

$ git clone --mirror git@oldgithost:repo
$ cd repo.git
# mirror into a local directory
  1. 大きなファイルを lfs-track するように履歴を書き換えます1 :
$ git filter-branch --tree-filter 'git lfs track "*.{zip,jar}"' -- --all
# writes the patterns to lsf-track into .gitattributes
  1. BFG を使用して、関連ファイルを Git LFS に抽出します。
$ 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)
  1. GitHub エンタープライズ リモートにプッシュします。
$ git push --mirror https://hostname/ghuser/repo.git
# Pushes the mirror to the new GitHub Enterprise repository
  1. 一時ディレクトリを削除:
$ cd ..
$ rm -rf repo.git

ノート

1 I/O が高いため、tmpfs などの -d オプションを使用して、ディスク外の一時ディレクトリに履歴を書き直すことをお勧めします。

于 2016-06-23T08:36:47.197 に答える