2016-02-23 24 views
18

Githubにはプッシュ・ラージ・ファイルにlimitがあります。大きなファイルをレポにプッシュする場合は、Git LFSを使用する必要があります。git lfsの利点は何ですか?

git repoにバイナリファイルを追加するのは悪い考えです。しかし、私のサーバ上でgitlabを使用していて、レポのファイルサイズに制限はなく、私のサーバ上ではレポサイズが非常に大きいとは限りません。この状態で、git lfsの利点は何ですか? git cloneまたはgit checkoutが高速になりますか?

+0

接続速度を比較しましたか? – SOFe

+0

いいえ、私は原則それを理解しようとしています。 – Sanster

+1

git-lfsを使うと、クローンがもっと早くなります。ちょっとチェックしてください。lfsに入れられたファイルをダウンロードする時間です。しかし、本当にバイナリをチェックインする必要がある場合は、lfsを使ってください。 – Philippe

答えて

35

Git(および他の分散システム)の集中システムと比較して、各リポジトリにはプロジェクトの全履歴が含まれているという点があります。 100 Mbのファイルを作成し、それを100倍に圧縮し、圧縮しないとします。 10Gbのリポジトリになります。これは、各クローンが10 Gbのデータをダウンロードし、クローンを作成している各マシンで10 Gbのディスクスペースを使用することを意味します。さらにもっとイライラするのは、git rmの大きなファイルがあっても、これらの10Gbのデータをダウンロードする必要があります。

大きなファイルをgit-lfsのような別のシステムに置くと、ファイルの各バージョンへのポインタだけをリポジトリに格納することができるため、各クローンは各リビジョンの小さなデータをダウンロードします。チェックアウトは、使用しているバージョン、つまり上記の例では100Mbのみをダウンロードします。その結果、サーバー上のディスク領域を使用することになりますが、クライアントには多くの帯域幅とディスク領域が必要になります。

さらに、git gc(内部では、git repack)によって使用されるアルゴリズムは、大きなファイルではうまく機能しません。最近のバージョンのGitはこの分野で進歩しましたが、うまくいくはずですが、大きなファイルを持つ大きなリポジトリを使用すると、最終的に問題が発生する可能性があります。

関連する問題