Git 🌙
Português (Brasil) ▾ Topics ▾ Latest version ▾ git-check-ref-format last updated in 2.43.0

NOME

git-check-ref-format - Garanta que um nome da referência esteja bem formado

RESUMO

git check-ref-format [--normalize]
       [--[no-]allow-onelevel] [--refspec-pattern]
       <refname>
git check-ref-format --branch <branchname-shorthand>

DESCRIÇÃO

Verifica se um determinado refnome é aceitável e sai com um status diferente de zero, se não for.

Uma referência é usada no Git para especificar as ramificações e as etiquetas. Uma HEAD do ramo é armazenado na hierarquia refs/heads, enquanto uma etiqueta (tag) é armazenada na hierarquia refs/tags da referência do espaço de nomes (normalmente nos diretórios $GIT_DIR/refs/heads e $GIT_DIR/refs/tags ou como entradas no arquivo $GIT_DIR/packed-refs caso as referências forem empacotadas através do comando git gc).

O Git impõe as seguintes regras sobre como as referências são nomeadas:

  1. Eles podem incluir barras / para agrupamento hierárquico (diretório), mas nenhum componente separado por barras pode começar com um ponto . ou terminar com a sequência .lock.

  2. Eles devem ter pelo menos um /. Isso reforça a presença de uma categoria como heads/, tags/ etc. Porém os nomes reais não são restritos. Caso a opção --allow-onelevel seja utilizada, esta regra será dispensada.

  3. Eles não podem ter dois pontos consecutivos .. em qualquer lugar.

  4. Eles não podem ter caracteres de controle ASCII (ou seja, bytes cujos valores são menores que \040, ou \177 DEL), espaço, til `~ `, circunflexo `^ `ou dois pontos `: `em qualquer lugar.

  5. Eles não podem ter ponto de interrogação ?, asterisco * ou colchete aberto [ em lugar nenhum. Consulte a opção --refspec-pattern abaixo para ver uma exceção a esta regra.

  6. Eles não podem iniciar ou terminar com uma barra / ou conter múltiplas barras consecutivas (veja a opção --normalize abaixo para uma exceção a esta regra).

  7. Eles não podem terminar com um ponto ..

  8. Eles não podem conter uma sequência @{.

  9. Eles não podem ser o único caractere @.

  10. Eles não podem conter um \.

Estas regras facilitam para as ferramentas com base em script shell a analise das referências dos nomes, a expansão de um nome do caminho pelo shell quando um nome de referência é utilizado sem aspas (por engano) e também para evitar as ambiguidades em certas expressões dos nomes das referências (consulte gitrevisions[7]) :

  1. Um ponto duplo .. é freqüentemente utilizado como em` ref1..ref2` e, em alguns contextos, essa notação significa ^ref1 ref2 (isto é, não em` ref1` e em ref2).

  2. Um til ~ e um caractere circunflexo ^ são utilizados para introduzir a operação do postfix nth parent e peel onion.

  3. Dois pontos : para indicar são usados como em srcref:dstref "use o valor de srcref e armazene-o em dstref" nas operações de busca e envio. Ele também pode ser usado para selecionar um objeto específico, como em git cat-file: "git cat-file blob v1.3.3:refs.c".

  4. at-open-brace @{ é utilizado como uma notação para acessar uma entrada de reflog.

Com a opção --branch, o comando recebe um nome e verifica se ele pode ser usado como um nome de ramo válido (por exemplo, ao criar um novo ramo). Mas tenha cuidado ao usar a sintaxe "checkout" anterior que pode se referir a um estado HEAD desvinculado. A regra que o git check-ref-format --branch $name implementa pode ser mais rígida do que o que o git check-ref-format refs/heads/$name diz (um traço pode aparecer no início de um componente ref, mas é explicitamente proibido no início de um nome de ramo por exemplo). Quando executado com a opção --branch num repositório, a entrada é primeiro expandida para a “sintaxe "checkout" anterior” @{-n}. Por exemplo, @{-1} é uma maneira de indicar a última coisa que foi verificada usando a operação "git switch" ou "git checkout". Essa opção deve ser usada pelas porcelanas para aceitar esta sintaxe em qualquer lugar onde se espera um nome do ramo, para que elas possam agir como se você tivesse digitado o nome do ramo. Como exceção, observe que a “operação de "checkout" anterior” pode resultar num nome de objeto commit quando a enésima última coisa baixada não for um ramo.

OPÇÕES

--[no-]allow-onelevel

Controla se os refnames de um nível são aceitos (ou seja, refnames que não contêm vários componentes separados por /). A predefinição é --no-allow-onelevel.

--refspec-pattern

Interprete <refname> como um padrão de nome de referência para um refspec (conforme é usado com repositórios remotos). Se esta opção estiver ativada, <refname> poderá conter um único * na refspec (foo/bar*/baz ou foo/bar*baz/, mas não foo/bar*/baz* por exemplo).

--normalize

Normalize o refname removendo todos os caracteres de barra (/) à esquerda e reduzindo as séries de barras adjacentes entre os componentes do nome numa única barra. Se o refname normalizado for válido, imprima-o na saída predefinida e encerre com o a condição 0; caso contrário, encerre com uma condição diferente de zero. (a opção --print é uma forma obsoleta de escrever --normalize.)

EXEMPLOS

  • Imprima o nome da coisa anterior registrada:

    $ git check-ref-format --branch @{-1}
  • Determine o nome de referência a ser utilizado para uma nova ramificação:

    $ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")||
    { echo "nós não gostamos do '$newbranch' como um nome do ramo." >&2 ; exit 1 ; }

GIT

Parte do conjunto git[1]

scroll-to-top