PHP Manual
/
Skúsenosti z praxe

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

08. 03. 2022

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   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