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.47.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.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
--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
If --batch
or --batch-check
is given, cat-file
will read objects from stdin, one per line, and print information about them in the same order as they have been read. By default, the whole line is considered as an object, as if it were fed to 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]