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 → 2.48.1 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.3 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
--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
,--filters
ou--use-mailmap
.-
Quando utilizado com
--textconv
ou--filters
, as linhas da entrada devem informar o caminho, separado por espaços. Para mais detalhes consulte a seçãoSAÍDA DO LOTE
abaixo. -
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
,--filters
ou--use-mailmap
.-
Quando utilizado com
--textconv
ou--filters
, as linhas da entrada devem especificar o caminho, separado por espaço. Consulte a seçãoSAÍDA DO LOTE
abaixo 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-mailmap
ou--filters
.-
Quando utilizado com
--textconv
ou--filters
, as linhas da entrada devem informar o caminho, separado por espaços. Para mais detalhes consulte a seçãoSAÍDA DO LOTE
abaixo. -
Quando usado com
--use-mailmap
, para os objetos commit e tag, o comandocontents
mostra as identidades substituídas usando o mecanismo mailmap, enquanto o comandoinfo
mostra o tamanho do objeto como se ele realmente registrasse a substituição das identidades.
o
--batch-command
reconhece 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
--buffer
para 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 umflush
seja emitido. Quando--buffer
nã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
--batch
ou--batch-check
. É predefinido os objetos seja visitados em ordem e classificados pelos seus hashes; consulte também a opção--unordered
abaixo. 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-check
ou--batch-command
numa grande quantidade de objetos. - --unordered
-
Quando a opção
--batch-all-objects
estiver 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-file
ainda mostrará cada objeto apenas uma vez, ainda que ele esteja armazenado diversas vezes no repositório. - --allow-unknown-type
-
Permita que
-s
ou-t
consultem os objetos quebrados/corrompidos de um tipo desconhecido. - --follow-symlinks
-
Com o comando
--batch
ou 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/foo
ou um link de nível raiz para../foo
por 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 (
: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
, eles imprimiriam dados sobre o próprio link simbólico. No caso deHEAD:link
, você verá4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
Ambos
plink
ealink
apontam 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-check
ou--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-Z
porque 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
RESSALVAS
abaixo. -
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
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, 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]