Git → Перезапись истории, замена автора
Иногда возникает необходимость перезаписать в истории коммитов автора этих саммых коммитов. На такой случай как раз и добавлю эту заметку, потому что с тех пор, как использую git, такая потребность случалась уже трижды! 😏
Далее под кат...
Хоть сейчас уже и не рекомендуют использовать git filter-branch
, но у нас простой случай и подводные камни не предвидятся. Скрипт ниже, емейлы и имена редактируются по желанию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/bin/sh
git filter-branch --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_COMMITTER_EMAIL" = "pupkin@localhost" ]
then
cn="Taras Pupkin"
cm="pupkin@example.org"
fi
if [ "$GIT_AUTHOR_EMAIL" = "pupkin@localhost" ]
then
an="Taras Pupkin"
am="pupkin@example.org"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
|
Стоит учитывать, что хеши коммитов поменяются не только у тех, где автор был отредактирован, а у всех последующих от отредактированного, поскольку хеш коммита включает и хеш родительского коммита. И нужно иметь веские причины, чтобы перезаписывать историю git в репозитории, с которым работают другие люди (или роботы)
Комментарии