¿Qué git rev-parse
hacer?
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-parse
comando. 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-parse
para cambiar o "masajear" ciertos parámetros en la línea de comando antes del programa real se llama).git rev-parse
es 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-parse
es unplumbing
comando auxiliar utilizado principalmente para la manipulación.Un uso común de
git rev-parse
es imprimir los hashes SHA1 dados un especificador de revisión. Además, tiene varias opciones para formatear esta salida, como--short
para 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:
--verify
para verificar que el objeto especificado es un objeto git válido.--git-dir
para mostrar la ruta abs / relativa del.git
directorio.--is-inside-git-dir
o 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-opt
para normalizar argumentos en un script (algo similar agetopt
) e imprimir una cadena de salida que se puede usar coneval
Massage
simplemente 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..B
paragit log
ogit diff
en los argumentos equivalentes para el comando de fontanería subyacente comoB ^A
fuente
Solo para profundizar en la etimología del nombre del comando
rev-parse
, Git usa constantemente el términorev
en comandos de plomería como abreviatura de "revisión" y generalmente significa el hash SHA1 de 40 caracteres para un commit. El comando,rev-list
por 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
messaging
ymanipulation
como mencionas antes?git rev-parse
es la abreviatura degit revision-parse
. Toma la entrada dada y devuelve la ID de revisión de 40 caracteres correspondiente.git rev-parse
También funciona para obtener el nombre actual de la sucursal usando la bandera --abbrev-ref como:fuente
git log --format=%B -n 1 <revision>