Git
Português (Brasil) ▾ Topics ▾ Latest version ▾ git-for-each-ref last updated in 2.33.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=<chave>)…​] [--format=<formato>] [<padrão>…​]
		   [--points-at=<objeto>]
		   (--merged[=<objeto>] | --no-merged[=<objeto>])
		   [--contains[=<objeto>]] [--no-contains[=<objeto>]]

DESCRIÇÃO

Reitere todos as referências que coincidam com <padrão> e mostre-os de acordo com o <formato> utilizado depois de classificá-los de acordo com o conjunto informado por <chave>. Caso <count> seja utilizado, pare depois de exibir referências demais. Os valores interpolados no <formato> podem opcionalmente ser citados como literais de uma cadeia de caracteres no idioma do host utilizado, permitindo a sua avaliação direta neste 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.

--count=<count>

É predefinido que o comando exiba todos as referências que coincidam com <padrão>. Esta opção define um limite de quantidade para parar após a exibição de <count> referências.

--sort=<chave>

A field name to sort on. O prefixo - é utilizado para classificar em ordem decrescente. When unspecified, refname is used. Você pode utilizar a opção --sort=<chave> mais de uma vez; nesse caso, a última chave se torna a chave primária.

--format=<formato>

Uma cadeia de caracteres que interpola %(fieldname) vindo de uma referência sendo exibida e o objeto para o qual aponta. Caso fieldname seja prefixada com um asterisco (*) e a referência aponte para um objeto tag, utilize o valor do campo no objeto ao qual o objeto tag se refere (em vez do campo no objeto tag). Quando não especificado, o <formato> retorna para a predefinição %(objectname) SPC %(objecttype) TAB %(refname). Também interpola %% para % e % xx onde xx são dígitos hexadecimais interpolados com caracteres que tenha um código hexadecimal xx; % 00 interpola para \0 (NUL) por exemplo, %09 para \t (TAB) e %0a para \n (LF).

--color[=<quando>]

Respeite todas as cores especificadas 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

Se informado, as strings que substituem os espaços reservados % (fieldname) são citadas como literais de strings adequadas para o idioma do host especificado. Isso tem a intenção de 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). A opção é incompatível com --no-merged.

--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). A opção é incompatível com --merged.

--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.

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 "ref" (a parte após $GIT_DIR/). Para um nome abreviado não ambíguo do ref, acrescente : short. A opção core.warnAmbiguousRefs é utilizada para selecionar o modo estrito de abreviação. Caso lstrip=<N> (rstrip=<N>) for anexado, retira <N> dos componentes de caminho separados por barra da frente (traseira) do refname (%(refname:lstrip=2) por exemplo, transforma refs/tags/foo em foo e`%(refname:rstrip=2)` transforma refs/tags/foo em refs). Caso <N> seja um número negativo, retire quantos componentes do caminho forem necessários do final especificado, deixando os componentes do caminho -<N>, por exemplo (%(refname:lstrip=-2) transforma refs/tags/foo em tags/foo e %(refname:rstrip=-1) transforma refs/tags/foo em refs). Quando uma ref não possui componentes suficientes, o resultado se torna uma cadeia de caracteres vazia caso seja removida com <N> positivo, ou se torna o refname completo caso seja removida com um <N> negativo. Nenhum dos dois é 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 relatórios git cat-file -s) Acrescente : disk para saber o quanto o objeto ocupa no disco, em bytes. Consulte a nota sobre os tamanhos do disco na seção RESSALVAS abaixo.

objectname

O nome do objeto (também informado como SHA-1) Para uma abreviação não ambígua do nome do objeto, adicione : short. Para uma abreviação do nome do objeto com o comprimento desejado, inclua :short=<comprimento>, onde o comprimento mínimo é MINIMUM_ABBREV. O comprimento pode ser excedido para garantir que os nomes dos objetos sejam únicos.

deltabase

Isso se expande para o nome do objeto da base delta para o objeto especificado, caso ele esteja armazenado como um delta. Caso contrário, o objeto se expandirá para um nome nulo (todo zerado).

upstream

É o nome de uma "ref" local que pode ser considerada “upstream” da "ref" que está sendo exibida. Respeita :short, :lstrip e :rstrip da mesma maneira que o refname acima. Além disso, respeita também :track para exibir "[à frente N, atrás M]"e :trackshort para exibir a versão concisa: ">" (à frente), "<" (atrás), "<>" (à frente e atrás) ou "=" (em sincronia). :track também imprime "[gone]" sempre que uma "ref" "upstream" desconhecida seja encontrada. Acrescente :track,nobracket para exibir as informações de rastreamento sem colchetes (ou seja, "à frente de N, atrás de 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 tem nenhum efeito caso o ref não tenha informações de rastreamento associadas a ele. Todas as opções além de nobracket são mutuamente exclusivas, porém se utilizadas em conjunto, 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

Muda a cor de 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 o conteúdo à esquerda (Left-), ao meio (Middle-) ou à direita entre %(align:…​) e %(end). O "align:" é seguido por width=<largura> e position=<posição> em qualquer ordem separado por vírgula, onde a <posição> é esquerda, direita ou meio, a predefinição retorna para esquerda e <largura> é o comprimento total do conteúdo com alinhamento. Por questões de brevidade, os prefixos "width=" ou "position=" podem ser omitidos, podendo ser utilizados <largura> e <posição> apenas. Por exemplo, %(align:<largura>,<posição>). Caso o comprimento do conteúdo seja maior que a largura, nenhum alinhamento será realizado. Se utilizado com --quote, tudo entre %(align:…​) e %(end) será citado, porém se aninhado, a citação ocorrerá apenas no nível mais alto.

if

Utilizado como %(if)…​%(then)…​%(end) ou %(if)…​%(then)…​%(else)…​%(end). Caso haja um átomo com um valor ou uma cadeia de caracteres literal após o %(if), tudo após o %(then) será impresso; caso contrário, caso o átomo em %(else) seja utilizado, tudo será impresso após o %(else). Ignoramos o espaço ao avaliar uma cadeia de caracteres antes de %(then), isso é útil quando usamos o átomo %(HEAD) que imprime "*" ou " " e queremos aplicar a condição if apenas no ref HEAD. Anexar ":equals=<texto>" ou ":notequals=<texto>" para comparar o valor entre os átomos de %(if:…​) e %(then) com a sequência especificada.

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.

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.

Além do que foi dito acima para os objetos commit e tag, os nomes dos campos do cabeçalho (tree, parent, object, type, e tag) podem ser utilizados para especificar o valor no campo do cabeçalho.

Para os objetos commit e tag, os campos especiais creatordate e creator coincidirão com a data apropriada ou ao termo ordenado nome-email-data dos campos committer ou tagger, dependendo do tipo do objeto. Estes são destinados para trabalhar com uma mistura de tags anotadas e leves.

Os campos que possuam um termo ordenado nome-email-data como o valor (autor, committer e tagger) podem ser sufixados com nome, email e data para extrair o componente informado.

A mensagem completa em um objeto commit e tag são conteúdos. A sua primeira linha é contents:subject onde "subject" (assunto) é a concatenação de todas as linhas da mensagem do commit até a primeira linha em branco. A próxima linha é contents:body, onde "body" (corpo da mensagem) são todas as linhas após a primeira linha em branco. A assinatura opcional GPG é contents:signature. As primeiras N linhas da mensagem são obtidas usando contents:lines=N. Além disso, os trailers interpretados através do git-interpret-trailers[1] são obtidos como caractere de resposta (ou utilizando o alias do histórico contents:trailers). As linhas que não forem caractere de resposta do bloco dos caracteres de resposta, podem ser omitidos com trailers:only. As continuações dos espaços podem ser removidos dos caracteres de resposta, para que cada caractere apareça em uma linha por si só e com o seu conteúdo completo, utilizando trailers:unfold. Ambos podem ser utilizados juntos como trailers:unfold,only.

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

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 forma, nenhum erro é gerado caso um nome do campo seja referido a um campo inaplicável ao objeto "ref". Ele retorna uma cadeia de caracteres vazia.

Como um caso especial para os campos do tipo data, você pode especificar um formato para a data adicionando : seguido pelo nome do formato da data (veja quais os valores a opção --date assume em git-rev-list[1]).

Alguns átomos como %(align) e %(if) sempre exige que um %(end) coincida. 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 que produz diretamente um texto formatado. Exibe as tags dos 3 commits 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 exibindo a utilização da saída do "eval" no shell, demonstrando a utilização da opção --shell. Liste os prefixos de todos os "heads":

#!/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 exibir a utilização 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 exibir a utilização de %(if)…​%(then)…​%(end). Isso imprime o authorname (nome do autor), caso esteja 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.

VEJA TAMBÉM

GIT

Parte do conjunto git[1]