Изменение большого количества сообщений git commit - PullRequest
1 голос
/ 31 октября 2010

Очевидно, я набрал свою электронную почту давным-давно, когда я настраивал git, и поэтому во многих репозиториях моя почта была неправильной (я набрал 0 вместо o).Я подписываю все свои коммиты, поэтому почти в каждом коммите в каждом репо годами говорится signed off by: <xxx0@foo.bar> вместо signed off by: <xxxo@foo.bar>.Теперь я не могу просто переключить свою электронную почту, поэтому я хотел бы переключить эти сообщения о коммите.

Я уже сделал git config --global user.email "xxxo@foo.bar", так что это не должно быть проблемой в будущем.

Во-первых, возможно ли изменить сообщения в таком большом масштабе, не по-королевски все испортив?Я уже отправил эти изменения на несколько серверов, а другие сделали эти изменения.

Во-вторых, есть ли способ сделать это быстро в сценарии?т.е.:

foreach(commit in log)
{
    change "<xxx0@foo.bar>" to "<xxxo@foo.bar>"
}

Вся помощь приветствуется, и спасибо!

1 Ответ

6 голосов
/ 31 октября 2010

Если наборы изменений уже были опубликованы, а другие их вытащили, вам не следует их трогать. Модификация их изменит их SHA, что испортит вещи для других в королевском масштабе (см. Раздел «Восстановление из Restream Upstream» на странице git rebase).

Теперь, когда я упомянул это, предположим, что гипотетически они не были обнародованы. Если бы это было так, инструмент, который вы бы хотели использовать для их изменения, был бы git filter-branch.

...