Cambiar la propiedad de los commits en Git
Por ejemplo, necesitaba transferir todos los commits de mi antigua cuenta de correo electrónico en List a mi segunda cuenta de Gmail. El segundo caso en el que podría solicitar un cambio de este tipo es cuando accidentalmente hago un commit bajo un correo electrónico privado, pero una empresa en particular quiere commits bajo su dominio.
Afortunadamente, hay un comando para resolver este problema, que puedo llamar en el maestro del proyecto para sobrescribir todo el historial:
git filter-branch --env-filter "
if [ \"\$GIT_COMMITTER_EMAIL\" = \"janbarasek@seznam.cz\" ]
then
export GIT_COMMITTER_NAME=\"Jan Barášek\"
export GIT_COMMITTER_EMAIL=\"janbarasek@gmail.com\"
fi
if [ \"\$GIT_AUTHOR_EMAIL\" = \"janbarasek@seznam.cz\" ]
then
export GIT_AUTHOR_NAME=\"Jan Barášek\"
export GIT_AUTHOR_EMAIL=\"janbarasek@gmail.com\"
fi
" $@ --tag-name-filter cat -- --branches --tags
Una vez ejecutado el comando, los cambios deben ser enviados al maestro utilizando el comando git push -f
.
Atención:
Tras la ejecución del comando, se sobrescribe todo el historial de confirmaciones y se modifican los hashes. Se trata de una ruptura de la CB que sólo debería producirse en raras ocasiones. Si se comete un error al sobrescribir confirmaciones, el historial no se puede restaurar. Al mismo tiempo, debe eliminar o sobrescribir todas las ramas, de lo contrario habrá un conflicto sobre todos los commits modificados, que se escribirán doblemente (commit original y nuevo) cuando se resuelvan.
Jan Barášek Más sobre el autor
El autor trabaja como desarrollador senior y arquitecto de software en Praga. Diseña y gestiona grandes aplicaciones web que usted conoce y utiliza. Desde 2009 ha adquirido una gran experiencia que transmite a través de este sitio web.
Estaré encantado de ayudarte:
Contacte con