セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの規約
- 日常的なGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
低レベルコマンド
- 2.45.1 → 2.47.0 変更なし
-
2.45.0
04/29/24
- 2.42.1 → 2.44.2 変更なし
-
2.42.0
08/21/23
- 2.1.4 → 2.41.2 変更なし
-
2.0.5
12/17/14
説明
従来、ブランチとタグの先端(まとめてrefsと呼ばれます)は、$GIT_DIR/refs
ディレクトリ以下の(サブ)ディレクトリに、refごとに1つのファイルとして格納されていました。多くのブランチの先端は頻繁に更新される傾向がありますが、ほとんどのタグと一部のブランチの先端は更新されません。リポジトリに数百または数千のタグがある場合、このrefごとに1つのファイル形式は、ストレージを浪費し、パフォーマンスを低下させます。
このコマンドは、refを単一のファイル$GIT_DIR/packed-refs
に格納することにより、ストレージとパフォーマンスの問題を解決するために使用されます。refが従来の$GIT_DIR/refs
ディレクトリ階層にない場合、このファイルで検索され、見つかった場合は使用されます。.
ブランチへの後続の更新では、常に$GIT_DIR/refs
ディレクトリ階層の下に新しいファイルが作成されます。
refが多すぎるリポジトリを処理するための推奨される方法は、一度--all
でrefをパックし、 gelegentlich git pack-refs
を実行することです。タグは定義上静的であり、変更されることは想定されていません。ブランチヘッドは初期のpack-refs --all
でパックされますが、現在アクティブなブランチヘッドのみがアンパックされ、次のpack-refs
(--all
なし)はそれらをアンパックのままにします。
オプション
- --all
-
コマンドはデフォルトですべてのタグと既にパックされているrefをパックし、他のrefはそのままにします。これは、ブランチは活発に開発されると予想され、それらの先端をパックしてもパフォーマンスの向上に役立たないためです。このオプションは、非表示のref、壊れたref、およびシンボリックrefを除いて、すべてのrefもパックします。歴史的に興味深い多くのブランチを持つリポジトリに役立ちます。
- --no-prune
-
コマンドは通常、refをパックした後に
$GIT_DIR/refs
階層の下にあるルースrefを削除します。このオプションは、削除しないように指示します。 - --auto
-
refデータベースの現在の状態に応じて、必要に応じてrefをパックします。動作は、リポジトリで使用されるref形式によって異なり、将来変更される可能性があります。
-
「files」:
--auto
の特別な処理は実装されていません。 -
「reftable」: テーブルは、等比数列を形成するように圧縮されます。N + 1がより新しい2つのテーブルNとN + 1の場合、これはNがN + 1の少なくとも2倍大きいというプロパティを維持します。このプロパティに違反するテーブルのみが圧縮されます。
-
- --include <パターン>
-
glob(7)
パターンに基づいてrefをパックします。このオプションの繰り返しは、包含パターンを累積します。refが--include
と--exclude
の両方に含まれている場合、--exclude
が優先されます。--include
を使用すると、デフォルトですべてのタグが含まれなくなります。シンボリックrefと壊れたrefはパックされません。--all
と一緒に使用すると、noopになります。パターンのリストをクリアしてリセットするには、--no-include
を使用します。 - --exclude <パターン>
-
指定された
glob(7)
パターンに一致するrefをパックしません。このオプションの繰り返しは、除外パターンを累積します。パターンのリストをクリアしてリセットするには、--no-exclude
を使用します。 refが既にパックされている場合、--exclude
に含めてもアンパックされません。
--all
と一緒に使用すると、指定された--exclude
パターンに一致しないルースrefのみがパックされます。
--include
と一緒に使用すると、--include
に提供されたrefから、--exclude
に提供されたrefを引いたものがパックされます。
バグ
packed-refsメカニズムが導入される前に書かれた古いドキュメントでは、「ブランチ<branch>が存在する」という意味で「.git/refs/heads/<branch>ファイルが存在する」などと書かれている場合があります。
GIT
git[1]スイートの一部