Quiero modificar un mensaje de confirmación más profundo en la historia y he introducido muchas nuevas confirmaciones.
¿Cómo cambio el mensaje de confirmación? ¿Es posible?
fuente
Quiero modificar un mensaje de confirmación más profundo en la historia y he introducido muchas nuevas confirmaciones.
¿Cómo cambio el mensaje de confirmación? ¿Es posible?
El mensaje de Linus Torvalds puede responder a su pregunta:
Modificar / editar viejos mensajes de confirmación
Respuesta corta: no puede (si se presiona).
extracto (Linus se refiere a BitKeeper como BK):
Nota al margen, solo por interés histórico: en BK podrías.
Y si estás acostumbrado (como yo), fue realmente bastante práctico. Aplicaría una bomba de parche de Andrew, notaría que algo andaba mal y solo la editaría antes de sacarla.
Podría haber hecho lo mismo con git. Hubiera sido bastante fácil hacer que solo el mensaje de confirmación no formara parte del nombre, y aún así garantizar que el historial no se haya tocado, y permitir la cuestión de "arreglar comentarios más tarde".
Pero no lo hice.
Parte de esto es puramente "consistencia interna". Git es simplemente un sistema más limpio gracias a que todo está protegido por SHA1 y todos los objetos reciben el mismo tratamiento, independientemente del tipo de objeto. Sí, hay cuatro tipos diferentes de objetos, y todos son realmente diferentes, y no se pueden usar de la misma manera, pero al mismo tiempo, incluso si su codificación puede ser diferente en el disco, conceptualmente todos funcionan exactamente lo mismo.
Pero la consistencia interna no es realmente una excusa para ser inflexible, y claramente sería muy flexible si pudiéramos solucionar los errores después de que sucedan. Entonces ese no es un argumento realmente fuerte.
La verdadera razón por la que git no le permite cambiar el mensaje de confirmación termina siendo muy simple: de esa manera, puede confiar en los mensajes. Si permitiste que la gente los cambiara después, los mensajes son intrínsecamente poco confiables.
Para completar, puede reescribir su historial de confirmación local para reflejar lo que desea, como lo sugiere sykora (con un poco de rebase y reinicio: ¡duro, jadeo!)
Sin embargo, una vez que se publique su historia revisada de nuevo (con una git push origin +master:master
, la +
señal de forzar el empuje que se produzca, incluso si no se traduce en un "avance rápido" commit) ... se puede obtener en algunos problemas .
Extracto de esta otra pregunta SO:
En realidad, una vez presioné con --force to git.git repositorio y Linus me regañó. Creará muchos problemas para otras personas. Una respuesta simple es "no lo hagas".
Actualmente, un reemplazo de git podría hacer el truco.
En detalle: crear una rama de trabajo temporal
Restablecer el compromiso para reemplazar
Modifique el compromiso con el mensaje correcto
Reemplace la confirmación anterior por la nueva
vuelve a la rama donde estabas
eliminar la rama temporal
empujar
hecho.
fuente
Puede usar
git rebase -i
(contra la rama de la que se bifurcó) 'i' para interactiva.Reemplace el
pick
siguiente al comentario de confirmación que desea cambiar conr
(oreword
), guarde y salga y al hacerlo podrá hacer la edición.git push
una vez más y ya está!fuente
-p
argumento derebase
quép
reservas se fusionan.Supongamos que tienes un árbol como este:
Primero,
checkout
una rama temporal:En la
temp
rama,reset --hard
a una confirmación que desea cambiar su mensaje (por ejemplo, esa confirmación es946992
):Use
amend
para cambiar el mensaje:Después de eso, el árbol se verá así:
Entonces,
cherry-pick
todo el commit que está por delante de los946992
demaster
atemp
y los cometen, su usoamend
si desea cambiar sus mensajes, así:El árbol ahora se ve así:
Ahora fuerza empujar la rama temporal al control remoto:
El paso final, elimine la sucursal
master
en local,git fetch origin
para extraer la sucursalmaster
del servidor, luego cambie a la sucursalmaster
y elimine la sucursaltemp
.Ahora tanto su local como su remoto tendrán todos los mensajes actualizados.
fuente
En nuestra tienda, presenté la convención de agregar etiquetas anotadas reconocidas con nombre a las confirmaciones con mensajes incorrectos, y usar la anotación como reemplazo.
Aunque esto no ayuda a las personas que ejecutan comandos casuales de "git log", nos proporciona una forma de corregir las referencias incorrectas del rastreador de errores en los comentarios, y todas mis herramientas de compilación y lanzamiento comprenden la convención.
Obviamente, esta no es una respuesta genérica, pero podría ser algo que la gente pueda adoptar dentro de comunidades específicas. Estoy seguro de que si se usa a mayor escala, podría surgir algún tipo de soporte de porcelana, eventualmente ...
fuente
(De http://git.or.cz/gitwiki/GitTips#head-9f87cd21bcdf081a61c29985604ff4be35a5e6c0 )
Creo que eso debería responder a tu pregunta. Sin embargo, tenga en cuenta que si ha insertado código en un repositorio remoto y la gente lo ha retirado, esto va a estropear sus historiales de código, así como el trabajo que han realizado. Entonces hazlo con cuidado.
fuente
Si está utilizando extensiones de Git: vaya a la pantalla Confirmar, debe haber una casilla de verificación que dice "Modificar confirmación" en la parte inferior, como se puede ver a continuación:
fuente