Git
Português (Brasil) ▾Topics ▾Latest version ▾ git-for-each-ref last updated in 2.45.0

NOME

git-for-each-ref - Informações de saída de cada referência

RESUMO

git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl]
		   [(--sort=<key>)…​] [--format=<format>]
		   [--include-root-refs] [ --stdin | <pattern>…​ ]
		   [--points-at=<object>]
		   [--merged[=<object>]] [--no-merged[=<object>]]
		   [--contains[=<object>]] [--no-contains[=<object>]]
		   [--exclude=<pattern> …​]

DESCRIÇÃO

Itera sobre todas as referências que correspondem ao <padrão> e as exibe de acordo com o <formato> informado, após classificá-las de acordo com o conjunto fornecido de <chave>. Caso <count> seja usado, pare após mostrar esta quantidade de referências. Os valores interpolados em <formato> podem, opcionalmente, ser citados como literais de cadeia de caracteres no idioma do host especificado, permitindo a sua avaliação direta nesse idioma.

OPÇÕES

<padrão>…​

Caso uma ou mais padrões sejam utilizados, serão exibidos apenas as referências que coincidam com um dos padrões apresentados utilizando fnmatch(3) ou literal, neste último caso, apenas caso coincida completamente seja desde o início ou até uma barra.

--stdin

Caso a opção --stdin seja usada, então a lista de padrões é lida a partir de entrada predefinida em vez da lista de argumentos.

--count=<count>

É predefinido que o comando mostre todas as referências que correspondem ao <padrão>. Esta opção faz com que ele pare após mostrar esta quantidade de árbitros.

--sort=<chave>

Um nome de campo para classificação. Prefixo - para classificar em ordem decrescente do valor. Quando não especificado, o refname é usado. É possível usar a opção --sort=<chave> diversas vezes e, neste caso, a última chave se torna a chave primária.

--format=<formato>

Uma string que interpola %(fieldname) de uma referência que está sendo mostrada e o objeto para o qual ela aponta. Além disso, o literal de cadeia %% é renderizado como % e %xx - onde xx são dígitos hexadecimais - é renderizado como o caractere com código hexadecimal xx. Por exemplo, %00 interpola para \0 (NUL), %09 para \t (TAB) e %0a para \n (LF).

Quando não especificado, o padrão de <formato> é %(objectname) SPC %(objecttype) TAB %(refname).

--color[=<quando>]

Respeite todas as cores usadas com a opção --format. O campo <quando> deve ser always, never ou auto (comporte-se como always caso <quando> esteja ausente).

--shell
--perl
--python
--tcl

Quando usadas, as strings que substituem os espaços reservados %(fieldname) são citadas como literais da string adequados para o idioma específico do host. O objetivo é produzir um scriptlet que possa ser diretamente avaliado.

--points-at=<objeto>

Listar apenas as referências que apontem para o objeto especificado.

--merged[=<objeto>]

Liste apenas as referências cujas dicas são acessíveis a partir do commit especificado (ou HEAD caso nenhum seja especificado).

--no-merged[=<objeto>]

Liste apenas as referências cujas dicas não podem ser acessadas a partir do commit especificado (ou HEAD caso nenhum seja especificado).

--contains[=<objeto>]

Liste apenas as referências que contenham os commits especificados (ou HEAD caso nenhum seja especificado).

--no-contains[=<objeto>]

Listar apenas as referências que não contenham os commits especificados (ou HEAD caso nenhum seja especificado).

--ignore-case

As referências de classificação e filtragem não diferenciam as maiúsculas de minúsculas.

--omit-empty

Não imprima uma nova linha após a formatação das referências onde o formato se expande para a string vazia.

--exclude=<padrão>

Caso um ou mais padrões sejam fornecidos, somente as referências que não corresponderem a nenhum padrão que tenha sido excluído serão mostradas. A correspondência é feita usando as mesmas regras do <padrão> acima.

--include-root-refs

List root refs (HEAD and pseudorefs) apart from regular refs.

NOME DOS CAMPOS

Há vários valores dos campos estruturados nas referências dos objetos que podem ser utilizados para interpolação da saída resultante ou como chaves de classificação.

Os seguintes nomes podem ser utilizados para todos os objetos, :

refname

O nome da referência (a parte após $GIT_DIR/). Para um nome curto não ambíguo da referência, acrescente :short. A opção core.warnAmbiguousRefs é usada para selecionar o modo de abreviação estrita. Se lstrip=<N> (rstrip=<N>) for anexado, remove <N> componentes do caminho separados por barra da frente (atrás) do refname (por exemplo, %(refname:lstrip=2) transforma refs/tags/foo em foo e %(refname:rstrip=2) transforma refs/tags/foo em refs). Se <N> for um número negativo, remova quantos componentes do caminho forem necessários da extremidade especificada para deixar -<N> componentes do caminho (por exemplo, %(refname:lstrip=-2) transforma refs/tags/foo em tags/foo e %(refname:rstrip=-1) transforma refs/tags/foo em refs). Quando a referência de nome não possuir componentes suficientes, o resultado se torna uma cadeia de caracteres vazia se a remoção for feita com <N> positivo, ou se torna o nome completo da referência se a remoção for feita com <N> negativo. Nenhum deles é um erro.

O strip pode ser utilizado como sinônimo de lstrip.

objecttype

O tipo do objeto (blob, tree, commit, tag).

objectsize

O tamanho do objeto (o mesmo que o relatório git cat-file -s). Acrescente :disk para obter o tamanho, em bytes, que o objeto ocupa no disco. Consulte a observação sobre tamanhos no disco na seção RESSALVAS abaixo.

objectname

O nome do objeto (também conhecido como SHA-1). Para uma abreviação não ambígua do nome do objeto, acrescente :short. Para obter uma abreviação do nome do objeto com o comprimento desejado, acrescente :short=<comprimento>, onde o comprimento mínimo é MINIMUM_ABBREV. O comprimento pode ser excedido para garantir nomes de objetos exclusivos.

deltabase

Isso se expande para o nome do objeto da base delta do objeto fornecido, se ele estiver armazenado como um delta. Caso contrário, ele se expande para o nome do objeto nulo (todos os zeros).

upstream

O nome de uma referência local que pode ser considerada "upstream" da referência exibida. Respeita :short, :lstrip e :rstrip da mesma maneira que o refname acima. Além disso, respeite :track para mostrar "[ahead N, behind M]" e :trackshort para mostrar a versão resumida: ">" (à frente), "<" (atrás), "<>" (à frente e atrás) ou "=" (em sincronia). O :track também imprime "[gone]" sempre que uma referência desconhecida do upstream é encontrada. Acrescente :track,nobracket para mostrar informações de rastreamento sem colchetes (ou seja, "ahead N, behind M").

Para qualquer ramificação monitorada remotamente como %(upstream), %(upstream:nomeremoto) e %(upstream:remoteref) consulte o nome remoto e o nome "ref" monitorado remotamente e assim sucessivamente. Em outras palavras, o ramo monitorado remotamente pode ser atualizado de forma explicita ou individualmente utilizando o "refspec" %(upstream:remoteref):%(upstream) para que seja capturado em %(upstream:remotename).

Não terá efeito se a referência não tiver informações de rastreamento associadas a ela. Todas as opções, exceto nobracket, são mutuamente exclusivas, mas se forem usadas juntas, a última opção será selecionada.

push

O nome de uma "ref" local que representa a localização @{push} para uma ref que está sendo exibido. Respeita as opções :short, :lstrip, :rstrip, :track, :trackshort, :remotename, e :remoteref; assim como a opção upstream. Produz uma cadeia de caracteres vazia caso nenhum @{push} "ref" esteja configurada.

HEAD

* caso HEAD corresponda à ref atual (a ramificação que foi verificada), caso contrário ' '.

color

Altera a cor da saída. Seguido por :<colorname>, onde os nomes das cores são descritos em valores na seção "ARQUIVO DE CONFIGURAÇÃO" do git-config[1]. Por exemplo, %(color:bold red).

align

Alinhe à esquerda, ao meio ou à direita o conteúdo entre %(align:...) e %(end). O "align:" é seguido por width=<largura> e position=<posição> em qualquer ordem, separados por vírgula, onde <posição> é esquerda, direita ou centro, sendo o padrão a esquerda, e <largura> é o comprimento total do conteúdo com alinhamento. Para fins de brevidade, os prefixos "width=" e/ou "position=" podem ser omitidos e, em seu lugar, podem ser usados os prefixos <largura> e <posição>. Por exemplo, %(align:<largura>,<posição>). Se o comprimento do conteúdo for maior que a largura, nenhum alinhamento será realizado. Se usado com --quote, tudo o que estiver entre %(align:...) e %(end) será citado, mas, se estiver aninhado, somente o nível mais alto executará a citação.

if

Usado como %(if)…​%(then)…​%(end) ou %(if)…​%(then)…​%(else)…​%(end). Se houver um átomo com valor ou uma string literal após o %(if), tudo o que estiver após o %(then) será impresso; caso contrário, se o elemento %(else) for usado, tudo o que estiver após o %(else) será impresso. Ignoramos o espaço ao avaliar a cadeia de caracteres antes de %(then), o que é útil quando usamos o elemento %(HEAD) que imprime "*" ou " " e queremos aplicar a condição if somente na referência HEAD. Acrescente ":equals=<string>" ou ":notequals=<string>" para comparar o valor entre os elementos %(if:…​) e %(then) com a string fornecida.

symref

O ref ao qual determinado ref simbólico se refere. Caso não seja um ref simbólico, nada será impresso. Respeita as opções :short, :lstrip e :rstrip da mesma maneira que o refname acima.

assinatura

A assinatura GPG de um commit.

signature:grade

Mostra "G" para uma assinatura boa (válida), "B" para uma assinatura ruim, "U" para uma assinatura boa com validade desconhecida, "X" para uma assinatura boa que expirou, "Y" para uma assinatura boa feita por uma chave expirada, "R" para uma assinatura boa feita por uma chave revogada, "E" caso a assinatura não possa ser verificada (por exemplo, pela falta da chave) e "N" para nenhuma assinatura.

signature:signer

O signatário de uma assinatura GPG de um commit.

signature:key

A chave de uma assinatura GPG de um commit.

signature:fingerprint

A impressão digital de uma assinatura GPG de um commit.

signature:primarykeyfingerprint

A impressão digital da chave primária da assinatura GPG de um commit.

signature:trustlevel

O nível de confiança de uma assinatura GPG de um commit. Os possíveis resultados são ultimate, fully, marginal, never e undefined.

worktreepath

O caminho absoluto para a árvore de trabalho onde a "ref" foi averiguada, caso estiveja em qualquer árvore de trabalho vinculada. Caso contrário, uma sequência vazia.

ahead-behind:<committish>

Dois números inteiros, separados por um espaço, demonstrando a quantidade de commits a frente e atrás, respectivamente, ao comparar a ref gerada com o <committish> no formato especificado.

describe[:options]

Um nome legível para humanos, como git-describe[1]; uma string vazia para commits indescritíveis. A string describe pode ser seguida por dois-pontos e uma ou mais opções separadas por vírgulas.

tags=<valor-bool>

Em vez de considerar apenas as tags anotadas, considere também as tags simples; consulte a opção correspondente em git-describe[1] para obter mais detalhes.

abbrev=<número>

Use pelo menos <número> de dígitos hexadecimais; consulte a opção correspondente em git-describe[1] para obter mais detalhes.

match=<padrão>

Considere apenas as tags informadas que correspondam ao padrão glob(7), excluindo o prefixo "refs/tags/"; consulte a opção correspondente em git-describe[1] para obter mais detalhes.

exclude=<padrão>

Não considere as tags informadas que correspondam ao padrão glob(7), excluindo o prefixo "refs/tags/"; consulte a opção correspondente em git-describe[1] para obter mais detalhes.

Além dos itens acima, para os objetos commit e etiqueta, os nomes dos campos de cabeçalho (tree, parent, object, type e tag) podem ser usados para especificar o valor no campo do cabeçalho. Os campos tree e parent também podem ser usados com os modificadores :short e :short=<comprimento>, assim como objectname.

Para os objetos commit e etiqueta, os campos especiais creatordate e creator corresponderão à data apropriada ou à tupla nome-email-data dos campos committer ou tagger, dependendo do tipo do objeto. Eles são destinados ao trabalho numa combinação de etiquetas anotadas e leves.

Para objetos de etiqueta, um fieldname prefixado com um asterisco (*) se expande para o valor fieldname do objeto descascado, em vez do valor do próprio objeto de etiqueta.

Os campos que têm a tupla nome-email-data como valor (author, committer e tagger) podem ser sufixados com name, email e date para extrair o componente nomeado. Para os campos de e-mail (authoremail, committeremail e taggeremail), :trim pode ser anexado para obter o e-mail sem colchetes angulares e :localpart para obter a parte antes do símbolo @ do e-mail cortado. Além dessas, a opção :mailmap e as correspondentes :mailmap,trim e :mailmap,localpart podem ser usadas (a ordem não importa) para obter valores do nome e do e-mail de acordo com o arquivo .mailmap ou de acordo com o arquivo definido na variável de configuração mailmap.file ou mailmap.blob (consulte gitmailmap[5]).

Os dados brutos num objeto são raw.

raw:size

O tamanho dos dados brutos do objeto.

Observe que --format=%(raw) não pode ser usado com as opções --python, --shell, --tcl, pois tais linguagens podem não ser compatíveis com dados binários arbitrários na string do tipo da variável deles.

A mensagem num commit ou na etiqueta do objeto é contents, onde o contents:<parte> pode ser utilizado para extrair várias partes de:

contents:size

O tamanho em bytes da mensagem do commit ou da tag.

contents:subject

O primeiro parágrafo da mensagem, que normalmente é uma única linha, é considerado o "assunto" do commit ou da etiqueta da mensagem. Em vez de contents:subject, o campo subject também pode ser usado para obter os mesmos resultados. O :sanitize pode ser anexado a subject para obter uma linha de assunto adequada ao nome do arquivo.

contents:body

O restante do commit ou a etiqueta da mensagem que segue o "assunto".

contents:signature

A assinatura GPG opcional da tag.

contents:lines=N

As primeiras N linhas da mensagem.

Além disso, os trailers interpretados por git-interpret-trailers[1] são obtidos como trailers[:opções] (ou usando o pseudônimo histórico contents:trailers[:opções]). Para conhecer os valores válidos para as [:opções], consulte a seção trailers do git-log[1].

Para fins de classificação, os campos com valores numéricos são classificados em ordem numérica (objectsize, authordate, committerdate, creatordate, taggerdate). Todos os outros campos são usados para classificar em sua ordem de valor do byte.

Também existe uma opção de classificação por versões utilizando o nome do campo version:refnamee ou o seu apelido v:refname.

De qualquer maneira, o campo de um nome que se refere a um campo não aplicável ao objeto referido pela referência não causa um erro. Em vez disso, retorna uma string vazia.

As a special case for the date-type fields, you may specify a format for the date by adding : followed by date format name (see the values the --date option to git-rev-list[1] takes). If this formatting is provided in a --sort key, references will be sorted according to the byte-value of the formatted string rather than the numeric value of the underlying timestamp.

Alguns átomos, como %(align) `e `%(if), sempre exigem um %(end) correspondente. Nós os chamamos de "átomos de abertura" e, às vezes, os denotamos como %($open).

Quando uma citação específica da linguagem de script está em vigor, tudo entre um átomo de abertura no topo do nível e o seu %(end) correspondente é avaliado de acordo com a semântica do átomo de abertura e apenas o resultado do topo seja citado.

EXEMPLOS

Um exemplo de produção direta de texto formatado. Mostrar os 3 commits com etiqueta mais recentes:

#!/bin/sh

git for-each-ref --count=3 --sort='-*authordate' \
--format='From: %(*authorname) %(*authoremail)
Subject: %(*subject)
Date: %(*authordate)
Ref: %(*refname)

%(*body)
' 'refs/tags'

Um exemplo simples que mostra o uso do shell eval na saída, demonstrando o uso de --shell. Listar os prefixos de todos os cabeçalhos:

#!/bin/sh

git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
while read entry
do
	eval "$entry"
	echo `dirname $ref`
done

Um relatório um pouco mais elaborado sobre as tags, demonstrando que o formato pode ser um script inteiro:

#!/bin/sh

fmt='
	r=%(refname)
	t=%(*objecttype)
	T=${r#refs/tags/}

	o=%(*objectname)
	n=%(*authorname)
	e=%(*authoremail)
	s=%(*subject)
	d=%(*authordate)
	b=%(*body)

	kind=Tag
	if test "z$t" = z
	then
		# could be a lightweight tag
		t=%(objecttype)
		kind="Lightweight tag"
		o=%(objectname)
		n=%(authorname)
		e=%(authoremail)
		s=%(subject)
		d=%(authordate)
		b=%(body)
	fi
	echo "$kind $T points at a $t object $o"
	if test "z$t" = zcommit
	then
		echo "O commit foi criado por $n $e
at $d, and titled

    $s

A sua mensagem diz:
"
		echo "$b" | sed -e "s/^/    /"
		echo
	fi
'

eval=`git for-each-ref --shell --format="$fmt" \
	--sort='*objecttype' \
	--sort=-taggerdate \
	refs/tags`
eval "$eval"

Um exemplo para mostrar o uso de %(if)...%(then)...%(else)...%(end). Isso prefixa o ramo atual com uma estrela.

git for-each-ref --format="%(if)%(HEAD)%(then)* %(else)  %(end)%(refname:short)" refs/heads/

Um exemplo para mostrar o uso de %(if)...%(then)...%(end). Isso imprime o nome de autor, se estiver presente.

git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Criado por: %(authorname)%(end)"

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.

OBSERVAÇÕES

Ao combinar diversos filtros a opção --contains e a opção --no-contains, faz referências apenas aos que contenha pelo menos um dos commits --contains e não contenha nenhum dos commits mostrados com --no-contains.

Ao combinar diversos filtros a opção --merged e a opção --no-merged, faz referências apenas aos que sejam acessíveis a partir um dos commits --merged e de nenhum dos commits mostrados com --no-merged.

VEJA TAMBÉM

GIT

Parte do conjunto git[1]

scroll-to-top