El parche de formatting Git no funciona con algunas variables

Quería usar un script para crear un parche de todas mis confirmaciones, pero el git format-patch muestra fatal: bad revision error de fatal: bad revision erróneo en el script. Cuando uso la salida de sed no funciona, pero cuando lo hago manualmente o configuro la variable manualmente, el formatting git funciona bien. Estoy en la terminal de mac.

Por favor ayuda.

Captura de pantalla de mi terminal

git format-patch -1 `git log -1 --pretty=oneline | sed 's/ .*//'` -- git format-patch -1 `git log -1 --pretty=oneline | sed 's/ .*//'` -- también muestra el error. Captura de pantalla 2

Es difícil leer la image (no tan mal onclick en ella) pero el verdadero regalo son los colors. Cuando tu lo hagas:

 echo $a 

la salida, que comienza con c4e13 , está en amarillo. Si usted escribió:

 echo c4e13 

esa salida estaría en blanco.

Pregunta retórica / socrática: ¿Por qué? ¿Cuánto cuesta $a que causa que el SHA-1 esté en amarillo?


Respuesta: contiene algunos códigos de control ASCII de cambio de color embeddeds (escape, corchete izquierdo, dígitos, letra-m probablemente). Estos no son parte de SHA-1; fueron producidos por su git log porque lo obligó a producir color, incluso cuando la salida va a una tubería. (Por defecto, git deja de colorear el resultado cuando se canaliza).

Asegúrese de no capturar secuencias de control ANSI-terminal al escribir scripts (incluso simples como este). Tenga en count también que si desea get el SHA-1 asociado con HEAD , el "command de plomería git" (para escribir scripts) que hace esto es git rev-parse HEAD .