1

我有一个非常大的 Git 存储库(几乎 20K 次提交,3GB+,10+ 个作者),我正在从 Subversion 转移到 Github。我已经使用nirvdrum 的 svn2git(不是gitorious 上的 svn2git)移动了 repo,但是我没有设置作者文件来映射作者。还没有人使用这个 repo,也没有人克隆它,我已经告诉大家我正在做的改变会破坏任何克隆。

所以,我想做的是重写提交历史中的作者电子邮件,以便 Github 正确链接到那些 Github 用户。

我不想一次重写它们(正如Change the author and committer name and e-mail of multiple commits in GitRewrite author of Git commits所建议的那样),因为每位作者大约需要 30 分钟(我已经这样做了一位作者),我想在 repo 中的所有分支上进行所有提交,而不仅仅是当前分支。

4

1 回答 1

0

将此答案扩展为Rewrite author of Git commits以包括多个作者和 repo 中的所有修订。

git filter-branch --env-filter '
  if [ $GIT_AUTHOR_EMAIL = old_email1@whatever.com ];
    then GIT_AUTHOR_EMAIL=new_email1@whatever.com;
  fi;
  if [ $GIT_AUTHOR_EMAIL = old_email2@whatever.com ];
    then GIT_AUTHOR_EMAIL=new_email2@whatever.com;
  fi;
  if [ $GIT_AUTHOR_EMAIL = old_email3@whatever.com ];
    then GIT_AUTHOR_EMAIL=new_email3@whatever.com;
  fi;
  export GIT_AUTHOR_EMAIL' -- --all
于 2014-06-23T16:17:40.673 回答