セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット取得
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの慣例
- 日常のGit
- よくある質問 (FAQ)
- 用語集
- Hooks
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
内部コマンド (Plumbing Commands)
説明
ブロブなしの部分クローンは、`git clone --filter=blob:none` を使用して作成され、Gitクライアントがローカル操作に必要とされない限りブロブオブジェクトのダウンロードを避けるようにローカルリポジトリを設定します。これは、初期のクローンやその後のフェッチが到達可能なコミットやツリーをダウンロードしますが、ブロブはダウンロードしないことを意味します。`HEAD`ポインタを変更する後の操作(`git checkout`や`git merge`など)は、その操作を完了するために欠落したブロブをダウンロードする必要がある場合があります。
最悪の場合、`git blame` のようにブロブの差分を計算するコマンドは、Gitコマンドが必要とする欠落したオブジェクトを個別のブロブリクエストでダウンロードするため、非常に遅くなります。これにより、複数のダウンロードリクエストが発生し、Gitサーバーがこれらのオブジェクト間でデルタ圧縮を提供できなくなるという問題が生じます。
`git backfill` コマンドは、ユーザーがGitに対して、欠落しているブロブ(オプションのフィルター付き)をダウンロードするよう要求する方法を提供し、ファイルの履歴バージョンを表す欠落しているブロブをバッチでダウンロードできるようにします。`backfill` コマンドは、同じパスに出現するブロブをグループ化することでリクエストを最適化しようと試み、これによりサーバーから送信されるパックファイルでの良好なデルタ圧縮につながることが期待されます。
このように、`git backfill` は大きなクローンをより小さなチャンクに分割するメカニズムを提供します。`git clone --filter=blob:none` でブロブなしの部分クローンを開始し、その後ローカルリポジトリで `git backfill` を実行することで、クローン時にリポジトリ全体をダウンロードするよりも、いくつかの小さなネットワーク呼び出しで到達可能なすべてのオブジェクトをダウンロードする方法が提供されます。
デフォルトでは、`git backfill` は `HEAD` コミットから到達可能なすべてのブロブをダウンロードします。このセットは、さまざまなオプションを使用して制限したり、拡張したりすることができます。
このコマンドは実験的なものです。将来的にその動作が変更される可能性があります。
GIT
git[1] スイートの一部