設定と構成
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの規約
- 日常のGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
Plumbingコマンド
- 2.43.1 → 2.47.0 変更なし
-
2.43.0
11/20/23
- 2.42.2 → 2.42.3 変更なし
-
2.42.1
11/02/23
- 2.39.1 → 2.42.0 変更なし
-
2.39.0
12/12/22
- 2.37.1 → 2.38.5 変更なし
-
2.37.0
06/27/22
- 2.35.1 → 2.36.6 変更なし
-
2.35.0
01/24/22
- 2.34.1 → 2.34.8 変更なし
-
2.34.0
11/15/21
- 2.33.1 → 2.33.8 変更なし
-
2.33.0
08/16/21
- 2.32.1 → 2.32.7 変更なし
-
2.32.0
06/06/21
- 2.31.1 → 2.31.8 変更なし
-
2.31.0
03/15/21
- 2.23.1 → 2.30.9 変更なし
-
2.23.0
08/16/19
- 2.20.1 → 2.22.5 変更なし
-
2.20.0
12/09/18
- 2.19.1 → 2.19.6 変更なし
-
2.19.0
09/10/18
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
06/21/18
- 2.15.4 → 2.17.6 変更なし
-
2.14.6
12/06/19
- 2.11.4 → 2.13.7 変更なし
-
2.10.5
09/22/17
-
2.9.5
07/30/17
-
2.8.6
07/30/17
- 2.5.6 → 2.7.6 変更なし
-
2.4.12
05/05/17
- 2.1.4 → 2.3.10 変更なし
-
2.0.5
12/17/14
SYNOPSIS
git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx]
DESCRIPTION
このコマンドは、現在「パック」内に存在しないすべてのオブジェクトをパックに結合するために使用されます。既存のパックを単一の、より効率的なパックに再編成するためにも使用できます。
パックとは、個別に圧縮され、デルタ圧縮が適用されたオブジェクトのコレクションであり、関連付けられたインデックスファイルとともに単一のファイルに格納されます。
パックは、ミラーシステム、バックアップエンジン、ディスクストレージなどの負荷を軽減するために使用されます。
OPTIONS
- -a
-
アンパックされたオブジェクトを段階的にパックする代わりに、参照されているすべてを単一のパックにパックします。プライベート開発に使用されるリポジトリをパックする場合に特に役立ちます。
-d
と一緒に使用してください。これにより、git prune
によって残されたが、git fsck --full --dangling
でダングリングとして表示されるオブジェクトがクリーンアップされます。ダンププロトコルでフェッチするユーザーは、ローカルに既に持っているそのパック内のオブジェクトの数に関係なく、含まれるオブジェクトを取得するために新しいパック全体をフェッチする必要があることに注意してください。
プロミサーパックファイルは個別にリパックされます:関連する ".promisor" ファイルがあるパックファイルがある場合、これらのパックファイルは別の個別のパックにリパックされ、新しい個別のパックに対応する空の ".promisor" ファイルが書き込まれます。
- -A
-
-d
が使用されない限り、-a
と同じです。その後、以前のパック内の到達不能なオブジェクトは、古いパックに残されるのではなく、ルーズなアンパックされたオブジェクトになります。到達不能なオブジェクトは、リパック時でも意図的にパックに追加されることはありません。このオプションは、到達不能なオブジェクトが古いパックに残されて削除されるのを防ぎます。代わりに、ルーズな到達不能なオブジェクトは、次の git gc 呼び出しで通常の有効期限ルールに従ってプルーニングされます。 git-gc[1] を参照してください。 - -d
-
パック後、新しく作成されたパックが既存のパックを冗長にする場合は、冗長なパックを削除します。また、git prune-packed を実行して、冗長なルーズオブジェクトファイルを削除します。
- --cruft
-
-d
が使用されない限り、-a
と同じです。その後、到達不能なオブジェクトは、別のクラフトパックにパックされます。到達不能なオブジェクトは、次のgit gc
呼び出しで通常の有効期限ルールを使用してプルーニングできます ( git-gc[1] を参照)。-k
と互換性がありません。 - --cruft-expiration=<approxidate>
-
<approxidate>
より古い到達不能なオブジェクトを、次のgit gc
呼び出しを待たずにすぐに期限切れにします。--cruft -d
でのみ役立ちます。 - --max-cruft-size=<n>
-
新しいパックを作成する前に、
<n>
バイトまでの大きさのパックにクラフトオブジェクトをリパックします。<n>
より小さいクラフトパックが十分にある限り、リパックは、結合されたクラフトパックからのオブジェクトと、新しい到達不能なオブジェクトを含む新しいクラフトパックが作成されるようにします。<n>
より大きいクラフトパックは変更されません。新しいクラフトパックが<n>
バイトより大きい場合、複数のパックに分割され、すべてが最大<n>
バイトのサイズになることが保証されます。--cruft -d
でのみ役立ちます。 - --expire-to=<dir>
-
プルーニングされたオブジェクト (もしあれば) を含むクラフトパックをディレクトリ
<dir>
に書き込みます。このオプションは、プルーニングされたオブジェクトのコピーをバックアップとして別のディレクトリに保持する場合に役立ちます。--cruft -d
でのみ役立ちます。 - -l
-
git pack-objects に
--local
オプションを渡します。 git-pack-objects[1] を参照してください。 - -f
-
git-pack-objects
に--no-reuse-delta
オプションを渡します。 git-pack-objects[1] を参照してください。 - -F
-
git-pack-objects
に--no-reuse-object
オプションを渡します。 git-pack-objects[1] を参照してください。 - -q
- --quiet
-
標準エラーストリームに進行状況を表示せず、git pack-objects に
-q
オプションを渡します。 git-pack-objects[1] を参照してください。 - -n
-
git update-server-info でサーバー情報を更新しないでください。このオプションは、HTTPまたはFTPを介してこのリポジトリ(またはその直接コピー)を公開するために必要なローカルカタログファイルの更新をスキップします。 git-update-server-info[1] を参照してください。
- --window=<n>
- --depth=<n>
-
これら2つのオプションは、パックに含まれるオブジェクトがデルタ圧縮を使用してどのように格納されるかに影響します。オブジェクトは、最初にタイプ、サイズ、およびオプションで名前によって内部的にソートされ、
--window
内の他のオブジェクトと比較して、デルタ圧縮を使用するとスペースが節約されるかどうかが確認されます。--depth
は、最大デルタ深度を制限します。深度が深すぎると、アンパッカー側のパフォーマンスに影響します。必要なオブジェクトを取得するために、デルタデータを何度も適用する必要があるためです。--window のデフォルト値は 10 で、--depth は 50 です。最大深度は 4095 です。
- --threads=<n>
-
このオプションは
git pack-objects
に渡されます。 - --window-memory=<n>
-
このオプションは、
--window
に加えて追加の制限を提供します。ウィンドウサイズは、メモリ内で <n> バイトを超えないように動的に縮小されます。これは、大小のオブジェクトが混在するリポジトリで、大きなウィンドウでメモリが不足しないようにするのに役立ちますが、小さなオブジェクトでは大きなウィンドウを利用できます。サイズには、「k」、「m」、または「g」のサフィックスを付けることができます。--window-memory=0
を指定すると、メモリ使用量は無制限になります。デフォルトは、pack.windowMemory
構成変数から取得されます。実際のメモリ使用量は、git-pack-objects[1] が使用するスレッド数と制限を掛け合わせたものになることに注意してください。 - --max-pack-size=<n>
-
各出力パックファイルの最大サイズ。サイズには、「k」、「m」、または「g」のサフィックスを付けることができます。許可される最小サイズは 1 MiB に制限されています。指定した場合、複数のパックファイルが作成される可能性があり、ビットマップインデックスの作成も防ぎます。デフォルトは無制限です。ただし、構成変数
pack.packSizeLimit
が設定されている場合は異なります。このオプションにより、リポジトリがより大きく、遅くなる可能性があることに注意してください。pack.packSizeLimit
の説明を参照してください。 - --filter=<filter-spec>
-
フィルタ仕様に一致するオブジェクトを結果のパックファイルから削除し、別のパックファイルに入れます。ワーキングディレクトリで使用されるオブジェクトはフィルターされないことに注意してください。したがって、分割を完全に機能させるには、ベアリポジトリで実行し、このオプションとともに
-a
および-d
オプションを使用するのが最適です。また、--no-write-bitmap-index
(またはrepack.writebitmaps
構成オプションをfalse
に設定) を使用する必要があります。そうしないと、すべてのオブジェクトを含む単一のパックファイルを前提としているため、ビットマップインデックスの書き込みが失敗します。有効な<filter-spec>
形式については、git-rev-list[1] を参照してください。 - --filter-to=<dir>
-
フィルターアウトされたオブジェクトを含むパックをディレクトリ
<dir>
に書き込みます。--filter
でのみ役立ちます。これは、Git の代替メカニズムを通じてアクセスされる別のオブジェクトディレクトリにパックを配置するために使用できます。警告: フィルターアウトされたオブジェクトを含むパックファイルにアクセスできない場合、そのパックファイル内のオブジェクトにアクセスできない可能性があるため、リポジトリが破損する可能性があります。gitrepository-layout[5] のobjects
およびobjects/info/alternates
セクションを参照してください。 - -b
- --write-bitmap-index
-
リパックの一部として到達可能性ビットマップインデックスを書き込みます。これは、ビットマップがすべての到達可能なオブジェクトを参照できる必要があるため、
-a
、-A
、または-m
と一緒に使用する場合にのみ意味があります。このオプションは、repack.writeBitmaps
の設定をオーバーライドします。複数のパックファイルが作成された場合、このオプションは効果がありません。ただし、MIDX を書き込む場合 (この場合、マルチパックビットマップが作成されます) は除きます。 - --pack-kept-objects
-
リパック時に
.keep
ファイル内のオブジェクトを含めます。pack-objects
が終了した後でも.keep
パックは削除されないことに注意してください。これはオブジェクトが複製される可能性があることを意味しますが、同時プッシュまたはフェッチがある場合にこのオプションを安全に使用できるようにします。このオプションは、-b
またはrepack.writeBitmaps
でビットマップを書き込む場合にのみ通常役立ちます。ビットマップ化されたパックファイルに必要なオブジェクトがあることを保証するためです。 - --keep-pack=<パック名>
-
指定されたパックをリパックから除外します。これは、パックに
.keep
ファイルがあるのと同等です。<パック名>
は、先頭のディレクトリを含まないパックファイル名です(例:pack-123.pack
)。このオプションを複数回指定することで、複数のパックを保持できます。 - --unpack-unreachable=<時>
-
到達不能なオブジェクトをバラす際、
<時>
より古いオブジェクトはバラさないでください。これは、後続のgit prune
で即座に削除されるオブジェクトの書き込みを最適化するために使用できます。 - -k
- --keep-unreachable
-
-ad
とともに使用した場合、既存のパックの到達不能なオブジェクトは削除される代わりに、パックファイルの末尾に追加されます。さらに、到達不能なルーズオブジェクトはパックされ(そして対応するルーズオブジェクトは削除されます)。 - -i
- --delta-islands
-
git-pack-objects
に--delta-islands
オプションを渡します。 git-pack-objects[1]を参照してください。 - -g<係数>
- --geometric=<係数>
-
結果のパック構造を、各後続のパックに、次に大きいパックの少なくとも
<係数>
倍のオブジェクトが含まれるように配置します。git repack
は、幾何学的な進行を確実にするために、1つにリパックする必要があるパックファイルの「カット」を決定することにより、これを保証します。パックに含まれるオブジェクトの数によって、より大きいパックファイルをできるだけそのままにしておくことができるように、最小のパックファイルのセットを選択します。他のリパックモードとは異なり、パックするオブジェクトのセットは、「ロールアップ」されるパックのセットによって一意に決定されます。つまり、幾何学的な進行を復元するために結合する必要があると判断されたパックです。
ルーズオブジェクトは、到達可能性に関係なく、この「ロールアップ」に暗黙的に含まれます。これは将来変更される可能性があります。
マルチパックビットマップを書き込む場合、
git repack
は、MIDXによるオブジェクト選択の優先パックとして、最大の結果パックを選択します(git-multi-pack-index[1]を参照)。 - -m
- --write-midx
-
冗長でないパックを含むマルチパックインデックス(git-multi-pack-index[1]を参照)を書き込みます。
構成
さまざまな構成変数がパッキングに影響します。 git-config[1]を参照してください(「pack」および「delta」を検索)。
デフォルトでは、コマンドは--delta-base-offset
オプションをgit pack-objectsに渡します。これにより通常、わずかに小さいパックになりますが、生成されたパックはバージョン1.4.4より古いGitのバージョンとは互換性がありません。リポジトリをそのような古いGitバージョンと直接またはダンプHTTPプロトコル経由で共有する必要がある場合は、構成変数repack.UseDeltaBaseOffset
を「false」に設定してリパックする必要があります。ネイティブプロトコル経由での古いGitバージョンからのアクセスは、必要に応じてその場合に変換がオンザフライで実行されるため、このオプションの影響を受けません。
デルタ圧縮は、core.bigFileThreshold
構成変数より大きいオブジェクト、および属性delta
がfalseに設定されているファイルには使用されません。
GIT
git[1]スイートの一部