1. ホーム
  2. git

[解決済み] Gitのファイル制限(数とサイズ)について教えてください。

2022-05-04 10:44:49

質問事項

Gitのファイル数とファイルサイズの制限についてご存知の方はいらっしゃいますか?

解決方法を教えてください。

このメッセージは ライナス本人 その他の制限について

<ブロッククオート

[...] CVSは、結局のところ、1つのファイルに対しての指向性が強いのです。 というモデルです。

これは、100万個のファイルを持っていても、チェックするだけで良いという点では良いのですが そのうちの数個を取り出すだけで、決して 見る 他の 999,995のファイルです。

ギット 基本的に、レポ全体より少ない部分を実際に見ることはありません。たとえ 少し制限する(例えば、一部だけチェックアウトするとか、履歴を遡らせるとか)。 git は結局のところ、常に全体を気にしているのです。 そして、その知識を持ち運ぶ。

そのため、すべてを1つのものとして見るように強制すると、gitのスケールは非常に悪くなります。 巨大 リポジトリです。この部分は本当に直せないと思います。 おそらく改善できるはずです。

それから、quot;big file"の問題もありますね。本当にどうしたらいいのかわからないんです。 巨大なファイルをどうするか。私たちはそれが苦手なんです、わかっています。

もっと見るには、私の その他の回答 Git の限界は、各リポジトリが " を表す必要があることです。 首尾一貫したファイル群 "、それ自体がすべてのシステム"です("リポジトリの一部"のタグを付けることはできません)。

システムが自律的な(しかし相互に依存する)部品で構成されている場合、その部品に対応するために サブモジュール .

に示されるように Talljoeの回答 という制限を設けることができます。 システム しかし、もしあなたがGitの本質(SHA-1キーに代表されるデータの一貫性)を理解しているなら、真のquot;limit"は 使用法 を保存しようとしないことです。 すべて を Git リポジトリで使用する場合は、常にすべてを取得したりタグ付けしたりする用意があることが前提です。大規模なプロジェクトでは、それは意味をなさないでしょう。


gitの制限についてのより詳細な情報は、"を参照してください。 大きなファイルでのGIT となります。

(これは git-lfs : git リポジトリの外に大きなファイルを保存するためのソリューションです。GitHub、2015年4月)

gitレポを制限する3つの課題。

  • <強い 巨大ファイル (その パックファイル用xdelta はメモリ内だけなので、大きなファイルには不向きです)
  • 膨大なファイル数 つまり、1つのblobに1つのファイル、そして一度に1つのパックファイルを生成するためにgit gcの速度が遅くなるということです。
  • 巨大なパックファイル パックファイルインデックスで、(巨大な)パックファイルからデータを取得するのは非効率的です。

より最近のスレッド(2015年2月)では、以下のように説明されています。 Gitレポの制限事項 :

<ブロッククオート

中央のサーバーから同時に数個のクローンを作成すると、他のユーザーの同時処理も遅くなるのでしょうか?

クローン作成時にはサーバーにロックがかからないので、理論的にはクローン作成が他の操作に影響を与えることはありません。しかし、クローニングは多くのメモリを消費します(到達可能性ビットマップ機能をオンにしない限り、多くのCPUを消費します)。

<ブロッククオート

ウィル git pull は遅いですか?

サーバーサイドを除けば ツリーの大きさが主な要因です。 しかし、あなたの25kファイルなら問題ないでしょう(Linuxは48kファイルです)。

<ブロッククオート

' git push '?

これは、レポの履歴の深さやツリーの幅に影響されないので、すぐにできるはずです...。

参照元の数は git-pushgit-pull .

このあたりは、私よりもステファンのほうがよく知っていると思います。

<ブロッククオート

' git commit '? (で遅いと記載されている)。 参考3 .) ' git status '? (見かけないけど参考3でまたスロー)

(また git-add )

繰り返しになりますが、ツリーの大きさです。あなたのレポのサイズでは、心配する必要はないと思います。

いくつかの操作は日常的なものではないかもしれませんが、GitLab/Stash/GitHubなどのWebフロントエンドから頻繁に呼び出される場合、ボトルネックになる可能性があります。(例: ' git branch --contains は、大量のブランチにひどく悪影響を受けるようです)。

git-blame は、ファイルの変更が多い場合に遅くなる可能性があります。