Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 no changes
-
2.45.0
2024-04-29
- 2.42.1 → 2.44.4 no changes
-
2.42.0
2023-08-21
- 2.1.4 → 2.41.3 no changes
-
2.0.5
2014-12-17
ОПИС
Традиційно, підказки гілок та тегів (разом відомі як «посилання») зберігалися в одному файлі на кожне посилання в (під)каталозі в каталозі $GIT_DIR/refs
. Хоча багато підказок гілок, як правило, часто оновлюються, більшість тегів та деякі підказки гілок ніколи не оновлюються. Коли репозиторій містить сотні або тисячі тегів, цей формат «один файл на посилання» як марнує місце для зберігання, так і знижує продуктивність.
Ця команда використовується для вирішення проблеми зберігання та продуктивності шляхом зберігання посилань в одному файлі $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": Вільні посилання упаковуються у файл
packed-refs
на основі співвідношення вільних посилань до розміру файлуpacked-refs
. Чим більший файлpacked-refs
, тим більше вільних посилань має існувати перед повторним упакуванням. -
"reftable": Таблиці стискаються таким чином, що вони утворюють геометричну послідовність. Для двох таблиць N та N+1, де N+1 новіша, це зберігає властивість, що N принаймні вдвічі більша за N+1. Стискаються лише таблиці, які порушують цю властивість.
-
- --include <візерунок>
-
Пакувати посилання на основі шаблону
glob
(7
). Повторення цієї опції накопичують шаблони включення. Якщо посилання включено одночасно в--include
та--exclude
,--exclude
має пріоритет. Використання--include
виключає включення всіх тегів за замовчуванням. Символічні посилання та пошкоджені посилання ніколи не будуть упаковані. При використанні з--all
це буде помилка. Використовуйте--no-include
для очищення та скидання списку шаблонів. - --exclude <pattern>
-
Не пакувати посилання, що відповідають заданому шаблону
glob
(7
). Повторення цієї опції накопичують шаблони виключень. Використовуйте--no-exclude
для очищення та скидання списку шаблонів. Якщо посилання вже упаковане, додавання його за допомогою--exclude
не призведе до його розпакування.При використанні з
--all
, упаковувати лише вільні посилання, які не відповідають жодному з наданих шаблонів--exclude
.При використанні з
--include
, посилання, надані--include
, мінус посилання, надані--exclude
, будуть упаковані.
ПОМИЛКИ
Старіша документація, написана до введення механізму packed-refs, може все ще містити повідомлення на кшталт «.git/refs/heads/<гілка> файл існує», коли це означає «гілка <гілка> існує».
GIT
Частина набору git[1]