O que git rev-parse
faz?
Eu li a página de manual, mas levantou mais perguntas do que respostas. Coisas como:
Parâmetros de separação e massagem
Massagem ? O que isso significa?
Estou usando como um resolvedor (para SHA1) de especificadores de revisão, como
git rev-parse HEAD^
ou
git rev-parse origin/master
Esse é o objetivo do comando? Se não, é correto usá-lo para conseguir isso?
git
git-rev-parse
talles
fonte
fonte
rev-parse
comando. Você também pode usá-lo para normalizar uma linha de comando, para que o programa real não precise entender a sintaxe complicada de nome de objeto do Git (você usariagit rev-parse
para alterar ou "massagear" certos parâmetros na linha de comando antes do programa real é chamado).git rev-parse
é ridiculamente incompreensível. Estou surpreso que ninguém tenha se incomodado em reescrever esse jargão em algo legível por humanos, mesmo depois de cinco anos.Respostas:
git rev-parse
é umplumbing
comando auxiliar usado principalmente para manipulação.Um uso comum
git rev-parse
é imprimir os hashes SHA1, com 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.Também existem outros casos de uso (em scripts e outras ferramentas criadas sobre o 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.git
diretório--is-inside-git-dir
ou dentro de uma árvore de trabalho usando--is-inside-work-tree
--is-bare-repository
--branches
), tags (--tags
) e os refs também pode ser filtrada com base no controle remoto (usando--remote
)--parse-opt
normalizar argumentos em um script (semelhante agetopt
) e imprimir uma sequência de saída que possa ser usada comeval
Massage
implica apenas que é possível converter as informações de um formulário para outro, ou seja, um comando de transformação. Estes são alguns exemplos rápidos em que consigo pensar:A..B
paragit log
ougit diff
nos argumentos equivalentes para o comando de encanamento subjacente, comoB ^A
fonte
Apenas para elaborar a etimologia do nome do comando
rev-parse
, o Git usa consistentemente o termorev
em comandos de canalização, abreviação de "revisão" e geralmente significa o hash SHA1 de 40 caracteres para uma confirmação. O comando,rev-list
por exemplo, imprime uma lista de hashes de confirmação de 40 caracteres para uma ramificação ou qualquer outra coisa.Nesse caso, o nome pode ser expandido para
parse-a-commitish-to-a-full-SHA1-hash
. Embora o comando tenha 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 filial ou hash abreviado no hash inequívoco SHA1 de 40 caracteres mais útil para muitos programas / encanamentos propósitos.Eu sei que eu estava pensando que era "analisar reversamente" algo por um bom tempo antes de descobrir e tive o mesmo problema de entender os termos "massageando" e "manipulação" :)
De qualquer forma, acho essa noção de "analisar para uma revisão" uma maneira satisfatória de pensar sobre ela, e um conceito confiável para trazer esse comando à mente quando preciso desse tipo de coisa. Freqüentemente, no script Git, você usa uma referência de confirmação amigável como entrada do usuário e geralmente deseja resolvê-la para uma referência de trabalho validada e inequívoca assim que recebê-la. Caso contrário, a tradução e a validação de entrada tendem a proliferar através do script.
fonte
messaging
emanipulation
como você alude antes?git rev-parse
é a abreviação degit revision-parse
. Ele pega a entrada fornecida e retorna o ID de revisão de 40 caracteres correspondente.git rev-parse
Também funciona para obter o nome do ramo atual usando o sinalizador --abbrev-ref como:fonte
git log --format=%B -n 1 <revision>