PHP Manual

Зміна права власності на комміти в Git'і

08. 03. 2022

При міграції репозиторіїв між організаціями часто виникає необхідність перезапису власників коммітів. Причиною цього може бути перенесення комітів з одного облікового запису на інший, наприклад, через зміну адреси електронної пошти користувача.

Наприклад, мені потрібно було перенести всі комміти з мого старого поштового акаунта на List в мій другий акаунт Gmail. Другий випадок, коли я можу попросити про таку зміну - це коли я випадково зафіксував під приватною електронною поштою, а певна компанія хоче зафіксувати під своїм доменом.

На щастя, є команда для вирішення цієї проблеми, яку я можу просто викликати в майстрі проектів, щоб перезаписати всю історію:

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

Після виконання команди зміни потрібно злити в майстер за допомогою команди git push -f.

Попередження:**.

Після виконання команди відбувається перезапис всієї історії коммітів та зміна хешів. Це перерва в БК, яка повинна траплятися дуже рідко. Якщо при перезаписуванні коммітів ви допустили помилку, історія не підлягає відновленню. При цьому необхідно видалити або перезаписати всі гілки, інакше виникне конфлікт по всім зміненим комітам, який при вирішенні буде записаний подвійно (оригінал і новий коміт).

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