1

どうやら私はずっと前に git をセットアップするたびにメールのタイプを間違えたようで、多くのリポジトリで私のメールが間違っていました (私は の0代わりに a を入力しました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>"
}

すべての助けに感謝します。

4

1 に答える 1

6

チェンジセットがすでに公開されていて、他の人がプルした場合は、それらに触れないでください。それらを変更すると、SHA が変更され、王室規模で他の人にとって物事が台無しになります (ページの「アップストリーム リベースからの回復」セクションを参照してgit rebaseください)。

私がそれを述べたので、仮にそれらが公開されていなかったと仮定します. その場合、それらすべてを変更するために使用するツールはgit filter-branch.

于 2010-10-31T00:22:11.847 に答える