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.53.0 → 2.54.0 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
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
ОПИС
Зазвичай вершини гілок та теги (які разом називаються «посиланнями» або refs) зберігалися по одному файлу на посилання у (суб)теці, розташованій у теці $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 <pattern>
-
Пакувати посилання на основі шаблону
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]