Я совершил кучу коммитов в проекте на Github, однако я понял, что не настроил правильную электронную почту и полное имя коммиттера на компьютере, который я сейчас использую, чтобы сделать свои коммиты, и, следовательно, аватар пользователя и адрес электронной почты не там
Как я могу переписать всю электронную почту и имена пользователей за последние коммиты?
Ответы:
Вы можете добавить этот псевдоним:
Чтобы изменить имя автора:
или по электронной почте только за последние 10 коммитов:
Alias:
Источник: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
источник
git change-commits GIT_COMMITTER_EMAIL "old@example.com" "new@example.com"
чтобы изменить адрес электронной почты коммиттера.change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3; echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";read OK;if [ \"$OK\" = 'Y' ] ; then shift 3; git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ]; then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;}; f "
Cannot create a new backup. A previous backup already exists in refs/original/
Смотрите здесь :
источник
Если вы уже отправили некоторые из ваших коммитов в общедоступный репозиторий, вы не хотите делать это, или это сделает альтернативную версию истории мастера, которую могли бы использовать другие. «Не пересекать потоки ... Это было бы плохо ...»
Тем не менее, если это только коммиты, которые вы сделали в своем локальном репозитории, то обязательно исправьте это, прежде чем отправлять на сервер. Вы можете использовать
git filter-branch
команду с этой--commit-filter
опцией, чтобы она редактировала только коммиты, соответствующие вашей неверной информации, например:источник
git update-ref -d refs/original/refs/heads/master
, см. < Stackoverflow.com/a/7654880/333403 >.A previous backup already exists in refs/original/
в этом случае, запустите его заново, с новым письмом, и добавьте-f
перед --commit-filter. Используйте по своему усмотрению. Обычно-f
опасно обходиться без знания того, что он делает.После применения ответа Оливье Вердиера:
... протолкнуть измененную историю в исходное использование репозитория:
Приведенная выше команда (обратите внимание на плюс) также принудительно переписывает историю в исходном репо. Используйте с осторожностью!
источник
https://help.github.com/articles/changing-author-info/
это полностью сработало для меня. После git push убедитесь, что вы видите обновление на веб-портале git. Если фиксация все еще не была связана с моей учетной записью, рядом с фиксацией показывалось уменьшенное изображение по умолчанию, и это не было отражено в моей временной шкале вклада, перейдите к URL фиксации и добавьте .patch в конце URL-адреса и проверьте имя и адрес электронной почты верны.
источник
Для тех, кому нужна просто версия для копирования (кроме обновления писем и имён):
источник
Учитывая использование
git-filter-branch
является не требуется , чтобы сделать то же самое в GIT-фильтр-репо (возможно , потребуется установить его первый сpip install git-filter-repo
):Если репозиторий является оригинальным, без удаленного доступа, вам придется добавить
--force
принудительную перезапись. (Вы можете создать резервную копию вашего репо, прежде чем делать это.)Если вы не хотите сохранять ссылки (они будут отображаться в истории веток Git GUI), вам придется добавить
--replace-refs delete-no-add
.Дополнительные функции см. В разделе «Фильтрация имен и писем» .
PS Украдено и улучшено с https://stackoverflow.com/a/59591928/714907 .
источник