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.45.1 → 2.47.1 no changes
- 2.45.0 04/29/24
- 2.42.1 → 2.44.2 no changes
- 2.42.0 08/21/23
- 2.1.4 → 2.41.2 no changes
- 2.0.5 12/17/14
DESCRIÇÃO
Tradicionalmente, as dicas das ramificações e as etiquetas (conhecidas coletivamente como "refs") eram armazenadas num arquivo por ref num (sub)diretório do diretório $GIT_DIR/refs
. Embora muitas dicas dos ramos tendam a ser atualizadas com frequência, a maioria das etiquetas e algumas dicas dos ramos nunca são atualizadas. Quando um repositório tem centenas ou milhares de etiquetas, este formato de um arquivo por referência desperdiça armazenamento e prejudica o desempenho.
Este comando é usado para resolver o problema de armazenamento e desempenho, armazenando as referências num único arquivo, $GIT_DIR/packed-refs
. Quando uma referência está faltando na hierarquia tradicional do diretório $GIT_DIR/refs
, ela é procurada nesse arquivo sendo utilizada caso seja encontrada.
Atualizações subsequentes nos ramos sempre criam novos arquivos na hierarquia de diretórios $GIT_DIR/refs
.
Uma prática recomendada para lidar com um repositório com muitas referências é empacotar as suas referências com a opção --all
uma vez e, ocasionalmente, executar o comando git pack-refs
. É predefinido que as etiquetas sejam estacionárias e não se espera que elas sejam alteradas. Os cabeçalhos da ramificação serão empacotados com o pack-refs --all
inicial, mas no momento, apenas os cabeçalhos ativos da ramificação serão desempacotados, e o próximo pack-refs
(sem --all
) os deixará desempacotados.
OPÇÕES
- --all
-
É predefinido que o comando, empacote todas as etiquetas e as referências que já estão empacotadas e deixa as outras referências sem empacotar. Isso se deve ao fato da espectativa que as ramificações sejam ativamente desenvolvidas, e o acúmulo dos seus cumes não ajude no desempenho. Esta opção faz com que todas as referências também sejam compactadas, com exceção das referências ocultas, quebradas e simbólicas. Útil para um repositório com muitos ramos onde haja interesses históricos.
- --no-prune
-
O comando geralmente remove as referências soltas na hierarquia
$GIT_DIR/refs
após empacotá-las. Essa opção diz para não fazê-lo. - --auto
-
Pack refs as needed depending on the current state of the ref database. The behavior depends on the ref format used by the repository and may change in the future.
-
"files": No special handling for
--auto
has been implemented. -
"reftable": Tables are compacted such that they form a geometric sequence. For two tables N and N+1, where N+1 is newer, this maintains the property that N is at least twice as big as N+1. Only tables that violate this property are compacted.
-
- --include <padrão>
-
Empacota refs com base num padrão
glob(7)
. As repetições dessa opção acumulam padrões de inclusão. Se uma referência estiver incluída tanto em--include
quanto em--exclude
, a opção--exclude
tem precedência. Por padrão, o uso da opção--include
impedirá que todas as tags sejam incluídas. os refs simbólicos e os refs quebrados nunca serão empacotados. Quando usado com--all
, será um noop. Use--no-include
para limpar e redefinir a lista de padrões. - --exclude <padrão>
-
Não empacote refs que correspondam ao padrão
glob(7)
fornecido. As repetições dessa opção acumulam padrões de exclusão. Use--no-exclude
para limpar e redefinir a lista de padrões. Se uma ref já estiver empacotada, ao incluí-la com a opção--exclude
não a desempacotará.
Quando usado com --all
, empacota apenas as refs soltas que não correspondem a nenhum dos padrões --exclude
fornecidos.
Quando usado com a opção --include
, as refs fornecidas para a opção --include
, menos as refs que sejam fornecidas para --exclude
, serão empacotadas.
BUGS
A documentação mais antiga escrita antes da introdução do mecanismo "packed-refs" ainda pode dizer coisas como "o arquivo .git/refs/heads/<ramo> existe" quando significa "o ramo <ramo> existe".
GIT
Parte do conjunto git[1]