セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット作成
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
-
2.49.0
2025-03-14
- 2.43.1 → 2.48.1 変更なし
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 変更なし
-
2.42.1
2023-11-02
- 2.39.1 → 2.42.0 変更なし
-
2.39.0
2022-12-12
- 2.37.1 → 2.38.5 変更なし
-
2.37.0
2022-06-27
- 2.35.1 → 2.36.6 変更なし
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 変更なし
-
2.34.0
2021-11-15
- 2.33.1 → 2.33.8 変更なし
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 変更なし
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 変更なし
-
2.31.0
2021-03-15
- 2.23.1 → 2.30.9 変更なし
-
2.23.0
2019-08-16
- 2.20.1 → 2.22.5 変更なし
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 変更なし
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
2018-06-21
- 2.15.4 → 2.17.6 変更なし
-
2.14.6
2019-12-06
- 2.11.4 → 2.13.7 変更なし
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.5.6 → 2.7.6 変更なし
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 変更なし
-
2.0.5
2014-12-17
概要
git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx] [--name-hash-version=<n>]
説明
このコマンドは、現在「パック」にないすべてのオブジェクトをパックに結合するために使用されます。また、既存のパックを単一のより効率的なパックに再編成するためにも使用できます。
パックとは、個別に圧縮され、デルタ圧縮が適用されたオブジェクトの集合体で、単一のファイルに保存され、関連するインデックスファイルを持っています。
パックは、ミラーシステム、バックアップエンジン、ディスクストレージなどへの負荷を軽減するために使用されます。
オプション
- -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
-
--local
オプションを git pack-objects に渡します。git-pack-objects[1] を参照してください。 - -f
-
--no-reuse-delta
オプションをgit-pack-objects
に渡します。git-pack-objects[1] を参照してください。 - -F
-
--no-reuse-object
オプションをgit-pack-objects
に渡します。git-pack-objects[1] を参照してください。 - -q
- --quiet
-
標準エラー出力ストリームに進捗状況を表示せず、
-q
オプションを git pack-objects に渡します。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」の接尾辞を付けることができます。許容される最小サイズは1MiBに制限されています。指定された場合、複数のパックファイルが作成されることがあり、これはビットマップインデックスの作成も妨げます。デフォルトは無制限ですが、設定変数
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=<pack-name>
-
指定されたパックを再パックから除外します。これはパック上に
.keep
ファイルがあることと同じです。<pack-name>
は先行ディレクトリなしのパックファイル名です(例:pack-123.pack
)。このオプションは、複数のパックを保持するために複数回指定できます。 - --unpack-unreachable=<when>
-
到達不能なオブジェクトを緩める際、
<when>
よりも古いオブジェクトは緩めません。これは、後続のgit prune
によって即座にプルーンされるようなオブジェクトの書き込みを最適化するために使用できます。 - -k
- --keep-unreachable
-
-ad
とともに使用すると、既存のパックからの到達不能なオブジェクトは削除される代わりにパックファイルの末尾に追加されます。さらに、到達不能な緩いオブジェクトはパックされます(そしてその緩い対応物は削除されます)。 - -i
- --delta-islands
-
--delta-islands
オプションをgit-pack-objects
に渡します。git-pack-objects[1] を参照してください。 - -g<factor>
- --geometric=<factor>
-
結果のパック構造を、各連続するパックが次に大きいパックのオブジェクト数の少なくとも
<factor>
倍を含むように配置します。git repack
は、幾何級数的な進行を確実にするために、1つに再パックする必要があるパックファイルの「カット」を決定することでこれを保証します。これにより、より多くの大きなパックファイル(そのパックに含まれるオブジェクトの数による)をそのまま残せるように、最小のパックファイルのセットを選択します。他の再パックモードとは異なり、パックするオブジェクトのセットは、「ロールアップ」されるパックのセットによって一意に決定されます。言い換えれば、幾何級数的な進行を回復するために結合する必要があると決定されたパックによって決まります。
緩いオブジェクトは、その到達可能性に関わらず、この「ロールアップ」に暗黙的に含まれます。これは将来変更される可能性があります。
マルチパックビットマップを書き込む際、
git repack
は結果として生成される最大のパックをMIDXによるオブジェクト選択の優先パックとして選択します(git-multi-pack-index[1] を参照)。 - -m
- --write-midx
-
冗長でないパックを含むマルチパックインデックス(git-multi-pack-index[1] を参照)を書き込みます。
- --name-hash-version=<n>
-
この引数を基となる
git pack-objects
プロセスに提供します。詳細については git-pack-objects[1] を参照してください。
設定
さまざまな設定変数がパッキングに影響を与えます。git-config[1] を参照してください(「pack」と「delta」で検索)。
デフォルトでは、このコマンドは --delta-base-offset
オプションを git pack-objects に渡します。これにより通常、パックはわずかに小さくなりますが、生成されたパックはGitのバージョン1.4.4より古いバージョンとは互換性がありません。このような古いGitバージョンと直接またはダムHTTPプロトコルを介してリポジトリを共有する必要がある場合、repack.UseDeltaBaseOffset
設定変数を「false」に設定して再パックする必要があります。ネイティブプロトコルを介した古いGitバージョンからのアクセスは、その場合に必要に応じて変換がオンザフライで実行されるため、このオプションの影響を受けません。
デルタ圧縮は、core.bigFileThreshold
設定変数より大きいオブジェクトや、delta
属性がfalseに設定されたファイルには使用されません。
GIT
git[1] スイートの一部