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.47.0 10/06/24
- 2.45.1 → 2.46.2 no changes
- 2.45.0 04/29/24
- 2.44.1 → 2.44.2 no changes
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 no changes
- 2.43.0 11/20/23
- 2.42.1 → 2.42.3 no changes
- 2.42.0 08/21/23
- 2.41.1 → 2.41.2 no changes
- 2.41.0 06/01/23
- 2.34.1 → 2.40.3 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
- 2.23.1 → 2.28.1 no changes
- 2.23.0 08/16/19
- 2.21.1 → 2.22.5 no changes
- 2.21.0 02/24/19
- 2.19.1 → 2.20.5 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.17.0 → 2.17.6 no changes
- 2.16.6 12/06/19
- 2.15.4 12/06/19
- 2.14.6 12/06/19
- 2.13.7 05/22/18
- 2.12.5 09/22/17
- 2.10.5 → 2.11.4 no changes
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 07/30/17
- 2.6.7 no changes
- 2.5.6 05/05/17
- 2.1.4 → 2.4.12 no changes
- 2.0.5 12/17/14
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, orefname
é 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
- ondexx
são dígitos hexadecimais - é renderizado como o caractere com código hexadecimalxx
. 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 seralways
,never
ouauto
(comporte-se comoalways
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 diretamenteavaliado
. - --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çãocore.warnAmbiguousRefs
é usada para selecionar o modo de abreviação estrita. Selstrip=<N>
(rstrip=<N>
) for anexado, remove<N>
componentes do caminho separados por barra da frente (atrás) do refname (por exemplo,%(refname:lstrip=2)
transformarefs/tags/foo
emfoo
e%(refname:rstrip=2)
transformarefs/tags/foo
emrefs
). 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)
transformarefs/tags/foo
emtags/foo
e%(refname:rstrip=-1)
transformarefs/tags/foo
emrefs
). 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 delstrip
. - 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çãoRESSALVAS
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 orefname
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çã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
-
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 porwidth=<largura>
eposition=<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 orefname
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
eundefined
. - 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. - is-base:<committish>
-
In at most one row,
(<committish>)
will appear to indicate the ref that is most likely the ref used as a starting point for the branch that produced<committish>
. This choice is made using a heuristic: choose the ref that minimizes the number of commits in the first-parent history of<committish>
and not in the first-parent history of the ref.For example, consider the following figure of first-parent histories of several refs:
*--*--*--*--*--* refs/heads/A \ \ *--*--*--* refs/heads/B \ \ \ \ * * refs/heads/C \ \ *--* refs/heads/D
Here, if
A
,B
, andC
are the filtered references, and the format string is%(refname):%(is-base:D)
, then the output would berefs/heads/A: refs/heads/B:(D) refs/heads/C:
This is because the first-parent history of
D
has its earliest intersection with the first-parent histories of the filtered refs at a common first-parent ancestor ofB
andC
and ties are broken by the earliest ref in the sorted order.Note that this token will not appear if the first-parent history of
<committish>
does not intersect the first-parent histories of the filtered refs. - 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
.
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 camposubject
também pode ser usado para obter os mesmos resultados. O:sanitize
pode ser anexado asubject
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
.
GIT
Parte do conjunto git[1]