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.46.2 no changes
-
2.46.1
09/13/24
- 2.42.2 → 2.46.0 no changes
-
2.42.1
11/02/23
-
2.42.0
08/21/23
- 2.40.1 → 2.41.2 no changes
-
2.40.0
03/12/23
- 2.38.1 → 2.39.5 no changes
-
2.38.0
10/02/22
- 2.36.1 → 2.37.7 no changes
-
2.36.0
04/18/22
- 2.34.1 → 2.35.8 no changes
-
2.34.0
11/15/21
- 2.32.1 → 2.33.8 no changes
-
2.32.0
06/06/21
- 2.28.1 → 2.31.8 no changes
-
2.28.0
07/27/20
- 2.21.1 → 2.27.1 no changes
-
2.21.0
02/24/19
- 2.19.1 → 2.20.5 no changes
-
2.19.0
09/10/18
- 2.17.0 → 2.18.5 no changes
-
2.16.6
12/06/19
- 2.15.4 no changes
-
2.14.6
12/06/19
- 2.12.5 → 2.13.7 no changes
-
2.11.4
09/22/17
- 2.10.5 no changes
-
2.9.5
07/30/17
- 2.7.6 → 2.8.6 no changes
-
2.6.7
05/05/17
-
2.5.6
05/05/17
- 2.1.4 → 2.4.12 no changes
-
2.0.5
12/17/14
RESUMO
git cat-file <tipo> <objeto> git cat-file (-e | -p) <objeto> git cat-file (-t | -s) [--allow-unknown-type] <objeto> git cat-file (--textconv | --filters) [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>] git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects] [--buffer] [--follow-symlinks] [--unordered] [--textconv | --filters] [-Z]
DESCRIÇÃO
Emite o conteúdo ou outras propriedades, como o tamanho, o tipo ou informações delta de um ou mais objetos.
Esse comando pode operar em dois modos, dependendo do fato de uma opção da família --batch ter sido especificada.
No modo não batch, o comando fornece informações sobre um objeto nomeado na linha de comando.
No modo batch, os argumentos são lidos na entrada padrão.
OPÇÕES
- <objeto>
-
O nome do objeto que será exibido. Para obter uma lista mais completa de maneiras de soletrar os nomes dos objetos, consulte a seção "DEFININDO AS REVISÕES" do comando gitrevisions[7].
- -t
-
Em vez do conteúdo, exiba o tipo do objeto identificado por
<objeto>. - -s
-
Em vez do conteúdo, mostre o tamanho do objeto identificado pelo
<objeto>. Caso seja utilizado com a opção--use-mailmap, mostrará o tamanho do objeto atualizado após a substituição dos "idents" usando o mecanismo do "mailmap". - -e
-
Encerre com a condição zero caso o
<objeto>exista e seja um objeto válido. Caso o<objeto>tenha um formato inválido, encerre com um valor diferente de zero e emita uma mensagem de erro no "stderr". - -p
-
Faça uma impressão bonita do conteúdo do
<objeto>com base no seu tipo. - <tipo>
-
Normalmente, isso corresponde ao tipo real do
<objeto>, mas também é permitido solicitar um tipo que possa ser trivialmente referenciado a partir do<objeto>informado. Um exemplo é solicitar uma "árvore" com o<objeto>sendo um objeto do comit que a contém, ou solicitar uma "bolha" com o<objeto>sendo uma etiqueta do objeto que aponte para ela. - --[no-]mailmap
- --[no-]use-mailmap
-
Use o arquivo mailmap para mapear os nomes e os endereços de e-mail do autor, de quem fez o commit e do rotulador para nomes reais e endereços de e-mail canônicos. Consulte git-shortlog[1].
- --textconv
-
Exiba o conteúdo da maneira que foi transformado por um filtro textconv. Nesse caso, o
<objeto>deve estar no formato<árvore>:<caminho>ou:<caminho>para aplicar o filtro ao conteúdo registrado no índice do<caminho>. - --filters
-
Exiba o conteúdo conforme foi convertido pelos filtros configurados na árvore de trabalho atual para o
<caminho>informado (por exemplo, filtros de manchas, conversão da quebra de linha, etc.). Nesse caso, o<objeto>deve estar no formato<árvore>:<caminho>ou:<caminho>. - --path=<caminho>
-
Para a utilização com o comando
--textconvou--filters, permitindo a definição de um nome do objeto e um caminho separadamente, quando for difícil descobrir a revisão de onde a bolha veio por exemplo. - --batch
- --batch=<formato>
-
Exiba a informação do objeto e seu conteúdo para cada objeto informado no stdin. Talvez não possa ser combinado com nenhuma outra opção exceto
--textconv,--filtersou--use-mailmap.-
Quando utilizado com
--textconvou--filters, as linhas da entrada devem informar o caminho, separado por espaços. Para mais detalhes consulte a seçãoSAÍDA DO LOTEabaixo. -
Quando usado com a opção
--use-mailmap, para objetos commit e tag, a parte da saída do conteúdo mostra as identidades que foram substituídas usando o mecanismo do "mailmap", enquanto a parte da saída de informação, mostra o tamanho do objeto como se ele realmente fosse gravado fazendo a substituição das identidades.
-
- --batch-check
- --batch-check=<formato>
-
Exiba as informações do objeto para cada objeto informado no stdin. Talvez não possa ser combinado com nenhuma outra opção exceto
--textconv,--filtersou--use-mailmap.-
Quando utilizado com
--textconvou--filters, as linhas da entrada devem especificar o caminho, separado por espaço. Consulte a seçãoSAÍDA DO LOTEabaixo para mais detalhes. -
Quando usado com
--use-mailmap, para objetos commit e tag, as informações impressas do objeto mostram o tamanho do objeto como se as identidades registradas nele fossem substituídas pelo mecanismo mailmap.
-
- --batch-command
- --batch-command=<formato>
-
Insira um modo de comando que faça a leitura dos comandos e dos argumentos do stdin. Só pode ser combinado com
--buffer,--textconv,--use-mailmapou--filters.-
Quando utilizado com
--textconvou--filters, as linhas da entrada devem informar o caminho, separado por espaços. Para mais detalhes consulte a seçãoSAÍDA DO LOTEabaixo. -
Quando usado com
--use-mailmap, para os objetos commit e tag, o comandocontentsmostra as identidades substituídas usando o mecanismo mailmap, enquanto o comandoinfomostra o tamanho do objeto como se ele realmente registrasse a substituição das identidades.
o
--batch-commandreconhece os seguintes comandos:- conteúdos <objeto>
-
Imprime o conteúdo do objeto para a referência do objeto
<objeto>. Isso corresponde à saída--batch. - info <objeto>
-
Imprime as informações do objeto para a referência do objeto
<objeto>. Isso corresponde à saída--batch-check. - flush
-
É utilizado com a opção
--bufferpara executar todos os comandos anteriores que foram emitidos desde o início ou desde que o último flush tenha sido feito. Quando a opção--bufferé utilizada, nenhuma saída virá até que umflushseja emitido. Quando--buffernão for utilizado, os comandos são liberados um por vez sem emitir umflush.
-
- --batch-all-objects
-
Em vez de ler uma lista de objetos no stdin, execute a operação em lote solicitada em todos os objetos do repositório e em todos os armazenamentos alternativos de objetos (não apenas nos objetos acessíveis). É obrigatório o uso das opções
--batchou--batch-check. É predefinido os objetos seja visitados em ordem e classificados pelos seus hashes; consulte também a opção--unorderedabaixo. Os objetos são apresentados no estado onde se encontram, sem respeitar o mecanismo de "substituição" do git-replace[1]. - --buffer
-
Normalmente, a saída do lote é liberada após a saída de cada objeto, para que um processo possa ler e gravar de forma interativa a partir do
cat-file. Com esta opção, a saída utiliza uma memória intermédia normal no stdio; por ser muito mais eficiente ao invocar comando--batch-checkou--batch-commandnuma grande quantidade de objetos. - --unordered
-
Quando a opção
--batch-all-objectsestiver em uso, visite os objetos numa ordem que possa ser mais eficiente para acessar o conteúdo do objeto do que a ordem do hash. Os detalhes exatos da ordem não são especificados, porém caso não precise de uma ordem específica, isso geralmente resultará numa saída mais rápida, especialmente com a opção--batch. Observe que o comandocat-fileainda mostrará cada objeto apenas uma vez, ainda que ele esteja armazenado diversas vezes no repositório. - --allow-unknown-type
-
Permita que
-sou-tconsultem os objetos quebrados/corrompidos de um tipo desconhecido. - --follow-symlinks
-
Com o comando
--batchou o--batch-check, siga os links simbólicos dentro do repositório ao solicitar os objetos com expressões SHA-1 estendidas com o formato tree-ish:path-in-tree. Em vez de fornecer a saída sobre o próprio link, forneça a saída sobre o objeto vinculado. Se um link simbólico apontar para fora da árvore (um link para/fooou um link de nível raiz para../foopor exemplo), será impressa a parte do link que está fora da árvore.Esta opção (atualmente) não funciona corretamente quando um objeto no índice seja definido (
:linkem vez doHEAD:linkpor exemplo) em vez de um na árvore.Esta opção (atualmente) não pode ser utilizada, a menos que a opção
--batchou--batch-checkseja utilizado.Considere um repositório git contendo, por exemplo:
f: a file containing "hello\n" link: um link simbólico para f dir/link: um link simbólico para ../f plink: um link simbólico para ../f alink: um link simbólico para /etc/passwd
Para um arquivo normal
f,echo HEAD:f | git cat-file --batchexibece013625030ba8dba906f756967f9e9ca394464a blob 6
E
echo HEAD:link | git cat-file --batch --follow-symlinksexibiria a mesma coisa, assim comoHEAD:dir/link, como ambos apontam paraHEAD:f.Sem a opção
--follow-symlinks, eles imprimiriam dados sobre o próprio link simbólico. No caso deHEAD:link, você verá4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
Ambos
plinkealinkapontam para fora da árvore, então eles imprimiriam respectivamente:symlink 4 ../f
symlink 11 /etc/passwd
- -Z
-
Só faz sentido com a opção
--batch,--batch-check, ou--batch-command; a entrada e a saída é delimitada por um NUL em vez de ser delimitada por uma nova linha. - -z
-
Só faz sentido com a opção
--batch,--batch-checkou--batch-command; a entrada é delimitada por um NUL em vez de ser delimitada por uma nova linha. Esta opção foi descontinuada em favor da opção-Zporque a saída pode ser ambígua.
SAÍDA
Caso a opção -t seja utilizada, um do <tipo>.
Caso a opção -s seja utilizada, o tamanho do <objeto> em bytes.
Caso a opção -e seja utilizada, nenhuma saída, a menos que o <objeto> esteja malformado.
Caso a opção -p seja utilizada, o conteúdo de <objeto> será bem impresso.
Caso um <tipo> seja utilizada, o conteúdo bruto (embora não compactado) do <objeto> será retornado.
SAÍDA DO LOTE
Caso o comando --batch ou --batch-check seja utilizado, o cat-file lerá os objetos vindos do stdin, um por linha, imprimindo as informações sobre eles. É predefinido que a linha inteira seja considerada como um objeto, como se fosse alimentada para o git-rev-parse[1].
Quando a opção --batch-command for dado, o cat-file fará a leitura dos comandos do stdin, um por linha, imprimindo informações com base no comando informado. Com o --batch-command, o comando info seguido de um objeto imprimirá as informações sobre o objeto da mesma maneira que a opção --batch-check faria, e o comando contents seguido de um conteúdo impresso do objeto igual ao que a opção --batch faria.
Você pode definir as informações exibidas para cada objeto utilizando um <formato> personalizado. O <formato> é copiado de forma literal para cada objeto no stdout, com espaços reservados no formato %(atom) expandidos, seguidos por uma nova linha. Os átomos que estão disponíveis são:
-
objectname -
A representação completa do hex do nome do objeto.
-
objecttype -
O tipo do objeto (o mesmo que os relatórios
cat-file -t). -
objectsize -
O tamanho, em bytes, do objeto (o mesmo que os relatórios
cat-file -s). -
objectsize:disk -
O tamanho, em bytes, que o objeto ocupa no disco. Consulte a nota sobre os tamanhos do disco na seção
RESSALVASabaixo. -
deltabase -
No caso do objeto estar armazenado como um delta no disco, isso se expande para a representação hexadecimal completa do nome do objeto com base delta. Caso contrário, expanda para OID null (tudo zero). Consulte
RESSALVASabaixo. -
rest -
Caso este átomo seja utilizado na cadeia da saída, as linhas de entrada serão divididas no primeiro limite de espaço. Todos os caracteres anteriores a esse espaço são considerados como o nome do objeto; caracteres após a primeira execução do espaço (ou seja, o "resto" da linha) são exibidos no lugar do átomo
%(rest).
Caso nenhum formato seja definido, o formato predefinido é %(objectname) %(objecttype) %(objectsize).
Caso --batch seja utilizado, ou caso o --batch-command seja utilizado com o comando contents, as informações do objeto são seguidas pelo conteúdo do objeto (consistindo em %(objectsize) bytes), seguido por uma nova linha.
Por exemplo, o comando --batch sem um formato personalizado produziria:
<oid> SP <tipo> SP <tamanho> LF <conteúdo> LF
Considerando que --batch-check='%(object-name) %(object-type)' produziria:
<oid> SP <tipo> LF
Caso um nome seja utilizado no stdin que não possa ser resolvido como um objeto no repositório, então o cat-file irá ignorar qualquer outro formato customizado e exibirá:
<objeto> SP faltando LF
Caso seja utilizado um nome que possa se referir a mais de um objeto (um SHA-1 curto e ambíguo), então o cat-file ignorará qualquer formato personalizado e exibirá:
<objeto> SP ambíguo LF
Caso a opção --follow-symlinks seja utilizado e um link-simbólico no repositório apontar para fora do repositório, então o cat-file irá ignorar qualquer outro formato customizado e exibirá:
link-simbólico SP <tamanho> LF <link-simbólico> LF
O link simbólico será absoluto (começando com /) ou relativo à raiz da árvore. Por exemplo, se dir/link apontar para ../../foo, então <link-simbólico> será ../foo. <tamanho> é o tamanho do links simbólico em bytes.
Caso a opção --follow-symlinks seja utilizado, as seguintes mensagens de erro serão exibidas:
<objeto> SP faltando LF
é impresso quando o link simbólico inicial solicitado não existir.
dangling SP <tamanho> LF <objeto> LF
é impresso quando o link-simbólico inicial existe, mas algo que ele (transitivo de ) aponte o contrário.
loop SP <tamanho> LF <objeto> LF
é impresso para os loops dos links simbólicos (ou quaisquer links simbólicos onde exijam mais de 40 resoluções de link para serem resolvidos).
notdir SP <tamanho> LF <objeto> LF
é impresso quando, durante a resolução do link-simbólico, um arquivo é utilizado como um nome do diretório.
Alternativamente, quando -Z é passado, os avanços da linha em qualquer um dos exemplos acima são substituídos por terminadores NUL. Isto assegura que a saída será passível de análise caso a saída em si tenha um espaço entre as linhas sendo portanto, recomendado para com scripts.
RESSALVAS
Observe que os tamanhos dos objetos no disco são relatados com precisão, porém é preciso ter cuidado ao tirar conclusões sobre quais as refs ou os objetos sejam responsáveis pela utilização do disco. O tamanho de um objeto não delta compactado, pode ser muito maior do que o tamanho dos objetos onde o delta seja contra ele, porém a escolha de qual objeto é a base e qual é o delta é arbitrária e está sujeita a alterações durante um reempacotamento.
Observe também que as várias cópias de um objeto podem estar presentes no banco de dados dos objetos; neste caso, é indefinido qual o tamanho da cópia ou da base delta que será relatada.
GIT
Parte do conjunto git[1]