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 11/20/23
- 2.42.1 no changes
- 2.42.0 08/21/23
- 2.41.0 06/01/23
- 2.34.1 → 2.40.1 no changes
- 2.34.0 11/15/21
- 2.31.1 → 2.33.8 no changes
- 2.31.0 03/15/21
- 2.29.1 → 2.30.9 no changes
- 2.29.0 10/19/20
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. Casofieldname
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
ondexx
são dígitos hexadecimais interpolados com caracteres que tenha um código hexadecimalxx
;% 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 seralways
,never
ouauto
(comporte-se comoalways
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çãocore.warnAmbiguousRefs
é utilizada para selecionar o modo estrito de abreviação. Casolstrip=<N>
(rstrip=<N>
) for anexado, retira<N>
dos componentes de caminho separados por barra da frente (traseira) do refname (%(refname:lstrip=2)
por exemplo, transformarefs/tags/foo
emfoo
e`%(refname:rstrip=2)` transformarefs/tags/foo
emrefs
). 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)
transformarefs/tags/foo
emtags/foo
e%(refname:rstrip=-1)
transformarefs/tags/foo
emrefs
). 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 delstrip
. - 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çãoRESSALVAS
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 orefname
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çãoupstream
. 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>
eposition=<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 orefname
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.
GIT
Parte do conjunto git[1]