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.43.0 no changes
- 2.42.1 11/02/23
- 2.42.0 08/21/23
- 2.40.1 → 2.41.0 no changes
- 2.40.0 03/12/23
- 2.38.1 → 2.39.3 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
NOME
git-cat-file - Forneça as informações do conteúdo, tipo e do tamanho para os objetos do repositório
RESUMO
git cat-file (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <tipo> | --textconv | --filters ) [--path=<caminho>] <objeto> git cat-file (--batch[=<formato>] | --batch-check[=<formato>]) [ --textconv | --filters ] [--follow-symlinks]
DESCRIÇÃO
Em sua primeira forma, o comando fornece o conteúdo ou o tipo de um objeto
no repositório. O tipo é necessário, a menos que a opção -t
ou -p
seja
utilizado para encontrar o tipo de objeto, ou -s
seja utilizado para
encontrar seu tamanho, ou a opção --textconv
ou --filters
seja utilizado
(que implica no tipo "blob" (bolha)).
Em sua segunda forma, é oferecida uma lista de objetos (separados por linhas
de alimentação) no "stdin", o SHA-1, o tipo e seu tamanho de cada objeto
exibidos no "stdout". O formato de saída pode ser substituído utilizando a
opção opcional <formato>
. Caso a opção --textconv
ou` --filters` foram
sejam utilizados, espera-se que a entrada liste os nomes dos objetos
seguidos pelo nome do caminho, separados por um único espaço, para que os
devidos controladores ser determinados.
OPÇÕES
- <objeto>
-
O nome do objeto que será exibido. Para uma lista mais completa de maneiras de escrever os nomes dos objetos, consulte a seção "DEFININDO AS REVISÕES" no gitrevisions[7].
- -t
-
Em vez do conteúdo, exiba o tipo do objeto identificado por
<objeto>
. - -s
-
Em vez do conteúdo, exiba o tamanho do objeto identificado por
<objeto>
. - -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 coincide com tipo real do <objeto>, mas solicitar um tipo sem referência de um determinado <objeto> também é permitido. Um exemplo é pedir uma "árvore" com o
<objeto>
sendo um objeto commit que o contém, ou pedir uma "bolha" com o<objeto>
sendo uma tag que aponte para ela. - --textconv
-
Exiba o conteúdo da maneira que foi transformado por um filtro textconv. Nesse caso, o
<objeto>
deve estar no formato<tree-ish>:<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<tree-ish>:<caminho>
ou:<caminho>
. - --path=<caminho>
-
Para a utilização com o comando
--textconv
ou--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
ou--filters
, neste caso, as linhas da entrada também precisam informar o caminho, separado por espaços. Para mais detalhes consulte a seçãoSAÍDA DO LOTE
abaixo. - --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
ou--filters
, neste caso, as linhas da entrada também precisam informar o caminho, separado por espaços. Para mais detalhes consulte a seçãoSAÍDA DO LOTE
abaixo. - --batch-all-objects
-
Em vez de ler uma lista dos objetos no stdin, execute a operação em lote solicitada em todos os objetos no repositório e em quaisquer outros armazenamentos alternativos dos objetos (não apenas nos objetos que forem acessíveis). Requer que o comando
--batch
ou--batch-check
seja utilizado. Observe que os objetos são capturados através da ordem dos seus hashes. - --buffer
-
Normalmente, a saída em 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-check
em uma grande quantidade de objetos. - --unordered
-
Quando o comando
--batch-all-objects
estiver em uso, visite os objetos em uma ordem que possa ser mais eficiente para acessar o conteúdo do objeto do que pela ordem do hash. Os detalhes exatos do pedido não são especificados, porém caso não precise de um pedido específico, em geral isso resultará em uma saída mais rápida, especialmente com a opção--batch
. Observe quecat-file
ainda exibirá cada objeto apenas uma vez, mesmo que ele seja armazenado várias vezes no repositório. - --allow-unknown-type
-
Permita que
-s
ou-t
consultem os objetos quebrados/corrompidos de um tipo desconhecido. - --follow-symlinks
-
Com a opção
--batch
ou--batch-check
, siga os links simbólicos dentro do repositório durante a solicitação dos objetos das expressões SHA-1 estendidas no formatotree-ish: path-in-tree
. Em vez de providenciar a geração sobre o próprio link, gere uma saída sobre o objeto que for vinculado. Caso um link simbólico aponte para fora da árvore (um link para /foo ou um link na raiz para ../foo por exemplo), a parte do link que está fora da árvore será exibida.Esta opção (atualmente) não funciona corretamente quando um objeto no índice seja definido (
:link
em vez doHEAD:link
por exemplo) em vez de um na árvore.Esta opção (atualmente) não pode ser utilizada, a menos que a opção
--batch
ou--batch-check
seja 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 --batch
exibece013625030ba8dba906f756967f9e9ca394464a blob 6
E
echo HEAD:link | git cat-file --batch --follow-symlinks
exibiria a mesma coisa, assim comoHEAD:dir/link
, como ambos apontam paraHEAD:f
.Sem a opção
--follow-symlinks
, irão exibir os dados sobre o próprio link simbólico. No caso deHEAD: link
, você veria4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
Ambos
plink
ealink
apontam para fora da árvore, então eles imprimiriam respectivamente:symlink 4 ../f
symlink 11 /etc/passwd
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].
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
-
O nome do objeto com 40 hexadecimais.
-
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
RESSALVAS
abaixo. -
deltabase
-
Se o objeto estiver armazenado como um delta no disco, ele se expandirá para SHA-1 com 40 hexadecimais do objeto base delta. Caso contrário, expande para um SHA-1 nulo (40 zeros). Consulte
RESSALVAS
abaixo. -
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, 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:
<sha1> SP <tipo> SP <tamanho> LF <conteúdo> LF
Considerando que --batch-check ='%(objeto-nome)% (objeto-tipo)'
produziria:
<sha1> 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 ou será absoluto (começando com um /) ou relativo à raiz da
árvore. Por exemplo, caso o dir/link aponte para ../../foo, então o
<symlink>
será ../foo. <tamanho> é o tamanho do link 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.
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]