Zmena vlastníctva revízie v systéme Git

📅   08. 03. 2022
👤   Jan Barášek

Pri migrácii repozitárov medzi organizáciami sa často stáva, že potrebujeme prepísať vlastníkov revízií. Dôvodom môže byť prenos revízií z jedného účtu na druhý, napríklad z dôvodu zmeny e-mailovej adresy používateľa.

Potreboval som napríklad preniesť všetky revízie z môjho starého e-mailového konta na Zozname do môjho druhého konta Gmail. Druhým prípadom, kedy môžem požiadať o takúto zmenu, je, keď omylom odovzdám pod súkromným e-mailom, ale konkrétna spoločnosť chce odovzdať pod svojou doménou.

Našťastie existuje príkaz na vyriešenie tohto problému, ktorý môžem jednoducho zavolať v hlavnom projekte a prepísať celú históriu:

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

Po vykonaní príkazu je potrebné zmeny spláchnuť do hlavného servera pomocou príkazu git push -f.

Upozornenie:

Po vykonaní príkazu sa prepíše celá história revízií a zmenia sa hashe. Ide o prerušenie BC, ktoré by sa malo vyskytovať len zriedkavo. Ak pri prepisovaní revízií urobíte chybu, históriu nie je možné obnoviť. Zároveň musíte odstrániť alebo prepísať všetky vetvy, inak dôjde ku konfliktu všetkých zmenených revízií, ktoré budú pri riešení zapísané dvakrát (pôvodná a nová revízia).

Jan Barášek     Viac o autorovi

Autor pracuje ako senior vývojár a softvérový architekt v Prahe. Navrhuje a spravuje veľké webové aplikácie, ktoré poznáte a používate. Od roku 2009 získal bohaté skúsenosti, ktoré odovzdáva prostredníctvom tejto webovej stránky.

Rád vám pomôžem:

Kontakt