Hay formas de cambiar el mensaje de confirmaciones posteriores:
git commit --amend # for the most recent commit
git rebase --interactive master~2 # but requires *parent*
¿Cómo puede cambiar el mensaje de confirmación de la primera confirmación (que no tiene padre)?
git filter-branch --msg-filter
Respuestas:
Suponiendo que tiene un árbol de trabajo limpio, puede hacer lo siguiente.
fuente
git rebase --onto HEAD <sha1-of-root> master
.git rebase
.git rebase
aplica confirmaciones en <branch> (master
) que no están en <upstream>;HEAD
no está enmaster
, así que su versión intenta aplicar todomaster
.git rebase --onto HEAD <sha1-of-root>
maestro, donde<sha1-of-root>
se usa lo mismogit checkout <sha1-of-root>
. De lo contrario, tendrá 2first commit
's.HEAD
asegura que se consideren todos los commits y que podamos usar la versión de dos parámetros de rebase para volver al master. Tenga en cuenta que esta respuesta es anterior a la existencia de la--root
opción de rebase.A partir de la versión 1.7.12 de Git , ahora puede usar
Documentación
fuente
Para ampliar la respuesta de ecdpalma , ahora puede usar la
--root
opción para indicarrebase
que desea reescribir la raíz / primer commit:Luego, la confirmación de raíz se mostrará en la lista TODO de rebase, y puede seleccionar editarla o reformularla:
Esta es la explicación de
--root
de los docs Git rebase (énfasis mío):fuente
Solo para proporcionar una alternativa a las respuestas mejor calificadas:
Si está creando un repositorio y sabe de antemano que hará un rebase además de su "primer" compromiso real en el futuro, puede evitar este problema por completo haciendo un compromiso vacío explícito al principio:
y solo entonces comienza a hacer commits "reales". Luego, puede reescribir fácilmente además de ese compromiso de la manera estándar, por ejemplo
git rebase -i HEAD^
fuente
.gitattributes
archivo en lugar de hacer un commit vacío.Podrías usar
git filter-branch
:fuente
-- --all
opción de hecho es la clave en este caso para poder manejar también el commit raíz.