セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット作成
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの慣習
- 日常的なGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
プラミングコマンド
- 2.45.1 → 2.49.0 変更なし
-
2.45.0
2024-04-29
- 2.42.1 → 2.44.3 変更なし
-
2.42.0
2023-08-21
- 2.1.4 → 2.41.3 変更なし
-
2.0.5
2014-12-17
説明
従来、ブランチやタグの先端 (総称してrefsとして知られる) は、$GIT_DIR/refs
ディレクトリ下の(サブ)ディレクトリに1リファレンスにつき1ファイルで保存されていました。多くのブランチの先端は頻繁に更新される傾向がありますが、ほとんどのタグや一部のブランチの先端は更新されません。リポジトリに数百または数千のタグがある場合、この1リファレンスにつき1ファイルという形式は、ストレージを浪費し、パフォーマンスを損ないます。
このコマンドは、リファレンスを単一のファイル、$GIT_DIR/packed-refs
に保存することで、ストレージとパフォーマンスの問題を解決するために使用されます。伝統的な$GIT_DIR/refs
ディレクトリ階層からリファレンスが欠落している場合、このファイル内で検索され、見つかれば使用されます。
ブランチに対するその後の更新は常に、$GIT_DIR/refs
ディレクトリ階層下に新しいファイルを作成します。
リファレンスが多すぎるリポジトリに対処するための推奨される方法は、一度--all
オプションでリファレンスをパックし、時折git pack-refs
を実行することです。タグは定義上固定されており、変更されることは想定されていません。ブランチのヘッドは最初のpack-refs --all
でパックされますが、現在アクティブなブランチのヘッドのみがアンパックされ、次のpack-refs
(--all
なし) ではそれらはアンパックされたままになります。
オプション
- --all
-
このコマンドはデフォルトで、既存のすべてのタグとパック済みのリファレンスをパックし、その他のリファレンスはそのままにします。これは、ブランチは活発に開発されることが想定されており、その先端をパックしてもパフォーマンス向上には寄与しないためです。このオプションを使用すると、隠されたリファレンス、壊れたリファレンス、シンボリックリファレンスを除き、すべてのリファレンスもパックされます。多くの履歴的関心のあるブランチを持つリポジトリに有用です。
- --no-prune
-
このコマンドは通常、リファレンスをパックした後、
$GIT_DIR/refs
階層下のルーズなリファレンスを削除します。このオプションは、そうしないように指示します。 - --auto
-
リファレンスデータベースの現在の状態に応じて、必要に応じてリファレンスをパックします。この挙動は、リポジトリで使用されるリファレンス形式に依存し、将来変更される可能性があります。
-
"files":
--auto
に対する特別な処理は実装されていません。 -
"reftable": テーブルは幾何級数になるように圧縮されます。NとN+1の2つのテーブル(N+1が新しい方)の場合、NがN+1の少なくとも2倍の大きさであるという特性が維持されます。この特性に違反するテーブルのみが圧縮されます。
-
- --include <パターン>
-
glob(7)
パターンに基づいてリファレンスをパックします。このオプションを繰り返すと、包含パターンが蓄積されます。リファレンスが--include
と--exclude
の両方に含まれている場合、--exclude
が優先されます。--include
を使用すると、デフォルトではすべてのタグが含まれなくなります。シンボリックリファレンスと壊れたリファレンスは決してパックされません。--all
と一緒に使用した場合、それは何もしません (noop)。パターンリストをクリアし、リセットするには--no-include
を使用します。 - --exclude <パターン>
-
指定された
glob(7)
パターンに一致するリファレンスはパックしません。このオプションを繰り返すと、除外パターンが蓄積されます。パターンリストをクリアし、リセットするには--no-exclude
を使用します。すでにパックされているリファレンスは、--exclude
で指定してもアンパックされません。
--all
と一緒に使用した場合、提供された--exclude
パターンに一致しないルーズなリファレンスのみをパックします。
--include
と一緒に使用した場合、--include
に提供されたリファレンスのうち、--exclude
に提供されたリファレンスを除いたものがパックされます。
バグ
packed-refsメカニズムが導入される前に書かれた古いドキュメンテーションでは、「ブランチ<branch>が存在する」という意味で「.git/refs/heads/<branch>ファイルが存在する」と記載されている場合があります。
Git
git[1] スイートの一部