Я бы хотел изменить свое имя, фамилию и адрес электронной почты во всех моих коммитах, возможно ли это?
git
git-filter-branch
Джошуа
источник
источник
Ответы:
Используйте
git-filter-branch
.Это влияет только на автора, а не на коммиттера (который для большинства коммитов будет таким же, как и автор). Если вы хотите переписать эти , а также, установить
GIT_COMMITTER_NAME
иGIT_COMMITTER_EMAIL
переменные.Применяется стандартное предупреждение о перезаписи истории; только делайте это с историей, которой еще не поделились.
Обновление за июнь 2018 г.
В руководство теперь включено решение, использующее
--env-filter
в своих примерах: https://git-scm.com/docs/git-filter-branch#_examples :источник
msysgit
, у вас все еще есть доступ кbash
. В противном случае я понятия не имею.Чтобы переписать и автора, и коммитера во всех выбранных коммитах:
источник
git push --all origin --force
Если других авторов нет, можно:
источник
Сохраните приведенный ниже сценарий, например,
~/.bin/git-replace-author
и запустите его, например:Без аргументов он обновляет все коммиты с вашим именем, чтобы использовать ваш текущий адрес электронной почты в соответствии с конфигурацией Git.
Raw (скачать)
источник
~/.bin/
должна быть внутри пользователей$PATH
и потребности файл исполняемым, так работать:chmod +x ~/.bin/git-replace-author
.Только если вы еще не опубликовали свои коммиты в мире. В противном случае у всех остальных будет ваше старое имя в своем репо, и вряд ли вы сможете изменить имя каждого.
источник
С Git 2.24 (4 квартал 2019 г.)
git filter-branch
(и BFG) устарели .Эквивалентом будет, using
newren/git-filter-repo
, и его примерный раздел :с
my-mailmap
:Это заменит имя автора и адрес электронной почты любого коммита, сделанного кем-либо с
<old@email.com>
См.
git shortlog
Раздел об авторе сопоставления для получения точного синтаксисаисточник