Por razones flojas, introduje un montón de confirmaciones con mensajes predeterminados y ahora se ha vuelto engorroso, ya que no sé realmente qué he cambiado en cada confirmación.
¿Cómo edito solo los mensajes de confirmaciones anteriores y (si es posible) mantengo el árbol de confirmaciones?
Respuestas:
Para editar los mensajes de confirmación de una serie de confirmaciones, ejecuto
donde
firstsha
es un identificador para la confirmación principal de la primera confirmación que quiero editar. (Puede usar cualquier referencia válida aquí, porgit rebase -i HEAD~4
lo que mostrará las últimas cuatro confirmaciones).En el editor que se abre, cambie todas las entradas "pick" a "reword" en los commits que desea modificar, luego cierre el editor; luego se le pedirá que ingrese mensajes de confirmación para todas las confirmaciones que eligió.
Tenga en cuenta que esto va a cambiar el árbol de cometer, porque los hashes de las confirmaciones van a cambiar. Tendrá que forzar a empujar su nuevo árbol, o empujarlo a una nueva rama. También desordenará las fusiones, así que evite editar confirmaciones de fusión.
Para editar rápidamente solo la última confirmación, ejecute
(Pero ten cuidado con cualquier cosa puesta en escena para commit).
fuente
preserve-merges
)Lo que estás buscando es
git rebase
.Si solo desea cambiar el
git commit
mensaje anterior , solo necesita usar lo siguiente:Y realice los cambios que desee en la confirmación anterior y luego guarde las ediciones.
Sin embargo, si necesita cambiar las confirmaciones anteriores, debe usarlas
rebase
.donde N es igual al número de confirmaciones a las que desea volver, por ejemplo, 2, 12 o 6, etc., etc.
Aquí debe obtener un editor de texto con sus confirmaciones. Cambie la opción de
pick
areword
para cambiar el mensaje.Una vez que haya identificado todas las confirmaciones que desea cambiar y haya cambiado adecuadamente sus opciones, guarde y cierre el editor. Luego realice los cambios en cada mensaje de confirmación. Una vez que esté satisfecho, puede ejecutar:
Y debería haber mantenido su historial de git aunque con diferentes valores hash porque ha realizado los cambios necesarios que desea. Aquí hay algunos enlaces adicionales que debe consultar:
7.6 Herramientas de Git - Reescritura del historial
Ayuda de GitHub - Cambio de un mensaje de
confirmación StackOverflow - Pregunta sobre cómo cambiar mensajes de confirmación antiguos
fuente
commit --amend
", a menos que arruine el proceso de confirmación de alguna manera.git rebase -i firstsha
esofirstsha
es el hash del compromiso de los padres del compromiso al que me gustaría cambiar el mensaje, luego en el editor, cambiepick
areword
,enter
mensaje nuevo, luego emitagit rebase --continue
y hacergit push --force
?git rebase -i HEAD~N
N sea el número de confirmaciones que desea realizar. Cambie todas las opciones de confirmación de las que desea editar el mensaje depick
areword
, guarde este archivo, realice los cambios en cada uno de esos archivos de confirmación y guárdelos. Una vez que esté seguro de haber terminado, solo necesitagit push --force [Name of git branch you are were working on]
. Siempre puede regresar y hacer esto nuevamente o hacerlo por etapas.