массовая смена адресов электронной почты на git с github - PullRequest
2 голосов
/ 31 августа 2010

Я недавно клонировал репозиторий hg в git, чтобы я мог опубликовать его на github. Многие адреса электронной почты неверны, и я хотел бы использовать git rebase, чтобы изменить их, прежде чем кто-либо разбудит этот проект. Если я поменяю их, как мне продвинуть новое, полностью переназначенное репо на github? Могу ли я просто перебазировать, а затем git push? я должен сначала удалить проект?

Ответы [ 3 ]

3 голосов
/ 31 августа 2010

Почти.Вам нужно использовать git push -f (или --force), чтобы перезаписать старую историю.


На совершенно другой ноте: почему вы " хотели бы использовать git rebase "чтобы изменить адреса электронной почты коммиттера вместо git filter-branch --env-filter?

1 голос
/ 02 апреля 2011

У меня пока недостаточно репутации, чтобы комментировать пост Йорга, но у github есть хороший скрипт оболочки, использующий git filter-branch --env-filter, который помог мне сделать то же самое в http://help.github.com/changing-author-info/. Это пример того, что другие комментаторы на посту Йорга говорили. Это сработало для меня.

0 голосов
/ 31 августа 2010

Один из способов сделать это:

  • Создайте файл .mbox, который содержит все патчи с момента создания репо: git format-patch --stdout --root > repo_history.mbox
  • Отредактируйте файл repo_history.mbox, изменив все адреса электронной почты по своему усмотрению. Это может быть так просто, как perl -pi~ -e's/oldemail\@host\.org/newemail\@newhost\.com/gi' repo_history.mbox
  • Создать новый репо: mkdir ~/newrepo; cd ~/newrepo; git init
  • Применить изменения предыдущего mbox к новому репо: git am /path/to/repo_history.mbox

Я только что проверил это на своем репо, и кажется, что вышеупомянутое добилось цели. Дайте мне знать, если вы хотите получить более подробную информацию.

Важно : Вы должны сделать это только за до того момента, когда вы когда-либо опубликуете этот репозиторий, и ни разу из него не вышли другие люди - я вижу, что ваш вопрос утверждает, что это уже, но это просто, чтобы подтвердить важность этого:)

...