PHP Manual
/
Experiencia de la práctica

Cambiar la propiedad de los commits en Git

08. 03. 2022

Al migrar repositorios entre organizaciones, a menudo sucede que necesitamos sobrescribir los propietarios de las confirmaciones. El motivo puede ser la transferencia de commits de una cuenta a otra, por ejemplo, debido a un cambio en la dirección de correo electrónico del usuario.

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   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
5.
Status:
All systems normal.
2024