PHP Manual
/
Esperienza dalla pratica

Cambiare la proprietà dei commit in Git

08. 03. 2022

Quando si migrano i repository tra organizzazioni, capita spesso di dover sovrascrivere i proprietari dei commit. La ragione di questo può essere il trasferimento di commit da un account ad un altro, per esempio, a causa di un cambiamento nell'indirizzo email dell'utente.

Per esempio, avevo bisogno di trasferire tutti i commit dal mio vecchio account di posta elettronica su List al mio secondo account Gmail. Il secondo caso in cui potrei richiedere un tale cambiamento è quando accidentalmente faccio un commit sotto un'email privata, ma una particolare azienda vuole i commit sotto il suo dominio.

Fortunatamente, c'è un comando per risolvere questo problema, che posso semplicemente chiamare nel master del progetto per sovrascrivere l'intera storia:

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

Dopo che il comando è stato eseguito, le modifiche devono essere scaricate sul master usando il comando git push -f.

Attenzione:

Dopo l'esecuzione del comando, l'intera cronologia dei commit viene sovrascritta e gli hash vengono cambiati. Questa è una rottura del BC che dovrebbe verificarsi solo in rari casi. Se fate un errore quando sovrascrivete i commit, la storia non può essere ripristinata. Allo stesso tempo, dovete cancellare o sovrascrivere tutti i rami, altrimenti ci sarà un conflitto su tutti i commit cambiati, che saranno scritti due volte (commit originale e nuovo) quando verranno risolti.

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