uso - verificar tags git




O que o git rev-parse faz? (2)

O que o git rev-parse faz?

Eu li a man page, mas levantou mais perguntas do que respostas. Coisas como:

Escolha e massageie parâmetros

Massagem ? O que isso significa?

Eu estou usando como um resolvedor (para SHA1) de especificadores de revisão, como

git rev-parse HEAD^

ou

git rev-parse origin/master

Este é o propósito do comando? Se não, é mesmo correto usá-lo para conseguir isso?


Apenas para elaborar a etimologia do nome do comando rev-parse , o Git usa consistentemente o termo rev em comandos de encanamento como abreviação de "revision" e geralmente significando o hash SHA1 de 40 caracteres para um commit. O comando rev-list por exemplo, imprime uma lista de 40-char commit hashes para uma ramificação ou qualquer outra coisa.

Nesse caso, o nome pode ser expandido para parse-a-commitish-to-a-full-SHA1-hash . Enquanto o comando tem as várias funções auxiliares mencionadas na resposta do Tuxdude, seu homônimo parece ser o caso de uso de transformar uma referência amigável como um nome de ramificação ou hash abreviado no hash SHA1 de 40 caracteres não ambíguo mais útil para muitos programação / encanamento finalidades.

Eu sei que estava pensando que era algo "reverso-analítico" por um bom tempo antes que eu percebesse e tivesse o mesmo problema de entender os termos "massagear" e "manipular" :)

Enfim, acho essa noção de "revisão para revisão" uma maneira satisfatória de pensar nela e um conceito confiável para levar esse comando à mente quando precisar desse tipo de coisa. Freqüentemente, no script Git, você usa uma referência de confirmação amigável ao usuário como entrada do usuário e, geralmente, quer resolvê-lo para uma referência de trabalho validada e não ambígua assim que recebê-lo o quanto antes. Caso contrário, a tradução e validação de entrada tendem a proliferar através do script.


git rev-parse é um comando de plumbing auxiliar usado principalmente para manipulação.

Um uso comum do git rev-parse é imprimir os hashes SHA1 dado um especificador de revisão. Além disso, possui várias opções para formatar essa saída, como --short para imprimir um SHA1 exclusivo mais curto.

Existem outros casos de uso (em scripts e outras ferramentas construídas no topo do git) que eu usei para:

  • --verify para verificar se o objeto especificado é um objeto git válido.
  • --git-dir para exibir o caminho abs / relativo do diretório .git .
  • Verificando se você está atualmente dentro de um repositório usando --is-inside-git-dir ou dentro de uma árvore de trabalho usando --is-inside-work-tree
  • Verificando se o --is-bare-repository está nu usando --is-bare-repository
  • A impressão de hashes SHA1 de ramificações ( --branches ), tags ( --tags ) e os refs também podem ser filtrados com base no remote (usando --remote )
  • --parse-opt para normalizar argumentos em um script (semelhante ao getopt ) e imprimir uma string de saída que pode ser usada com eval

Massage apenas implica que é possível converter as informações de um formulário em outro, ou seja, um comando de transformação. Estes são alguns exemplos rápidos que eu posso pensar:

  • um nome de ramificação ou tag no SHA1 do commit está apontando para que possa ser passado para um comando de encanamento que aceita apenas valores SHA1 para o commit.
  • um intervalo de revisão A..B para git log ou git diff nos argumentos equivalentes para o comando de encanamento subjacente como B ^A






git