¿Qué git rev-parsehacer?
He leído la página del manual, pero generó más preguntas que respuestas. Cosas como:
Seleccionar y masajear parámetros
Masaje ? Qué significa eso?
Estoy usando como solucionador (para SHA1) de especificadores de revisión, como
git rev-parse HEAD^
o
git rev-parse origin/master
¿Es este el propósito del comando? Si no, ¿es correcto usarlo para lograr esto?
git
git-rev-parse
talles
fuente
fuente

rev-parsecomando. También puede usarlo para normalizar una línea de comando, de modo que el programa real no tenga que comprender la complicada sintaxis de nombre de objeto de Git (usaríagit rev-parsepara cambiar o "masajear" ciertos parámetros en la línea de comando antes del programa real se llama).git rev-parsees ridículamente incomprensible. Me sorprende que nadie se haya molestado en reescribir esa jerga en algo legible para los humanos, incluso después de 5 años.Respuestas:
git rev-parsees unplumbingcomando auxiliar utilizado principalmente para la manipulación.Un uso común de
git rev-parsees imprimir los hashes SHA1 dados un especificador de revisión. Además, tiene varias opciones para formatear esta salida, como--shortpara imprimir un SHA1 único más corto.También hay otros casos de uso (en scripts y otras herramientas creadas sobre git) que he usado para:
--verifypara verificar que el objeto especificado es un objeto git válido.--git-dirpara mostrar la ruta abs / relativa del.gitdirectorio.--is-inside-git-diro dentro de un árbol de trabajo usando--is-inside-work-tree--is-bare-repository--branches), etiquetas (--tags) y las referencias también se pueden filtrar en función del control remoto (usando--remote)--parse-optpara normalizar argumentos en un script (algo similar agetopt) e imprimir una cadena de salida que se puede usar conevalMassagesimplemente implica que es posible convertir la información de un formulario a otro, es decir, un comando de transformación. Estos son algunos ejemplos rápidos que se me ocurren:A..Bparagit logogit diffen los argumentos equivalentes para el comando de fontanería subyacente comoB ^Afuente
Solo para profundizar en la etimología del nombre del comando
rev-parse, Git usa constantemente el términoreven comandos de plomería como abreviatura de "revisión" y generalmente significa el hash SHA1 de 40 caracteres para un commit. El comando,rev-listpor ejemplo, imprime una lista de hashes de confirmación de 40 caracteres para una rama o lo que sea.En este caso, el nombre podría expandirse a
parse-a-commitish-to-a-full-SHA1-hash. Si bien el comando tiene varias funciones auxiliares mencionadas en la respuesta de Tuxdude, su homónimo parece ser el caso de uso de la transformación de una referencia fácil de usar como un nombre de rama o hash abreviado en el hash SHA1 de 40 caracteres inequívoco más útil para muchas programaciones / plomería propósitosSé que estuve pensando que era algo de "análisis inverso" durante bastante tiempo antes de resolverlo y tuve el mismo problema para dar sentido a los términos "masaje" y "manipulación" :)
De todos modos, considero que esta noción de "analizar una revisión" es una forma satisfactoria de pensarlo y un concepto confiable para recordar este comando cuando necesito ese tipo de cosas. Con frecuencia, al crear scripts en Git, toma una referencia de confirmación fácil de usar como entrada del usuario y, en general, desea que se resuelva en una referencia de trabajo validada y sin ambigüedades tan pronto como sea posible. De lo contrario, la traducción y validación de entrada tiende a proliferar a través del script.
fuente
messagingymanipulationcomo mencionas antes?git rev-parsees la abreviatura degit revision-parse. Toma la entrada dada y devuelve la ID de revisión de 40 caracteres correspondiente.git rev-parseTambién funciona para obtener el nombre actual de la sucursal usando la bandera --abbrev-ref como:fuente
git log --format=%B -n 1 <revision>