在大型Git仓库中更改多个作者

时间:2014-06-23 16:17:41

标签: git svn svn2git

我有一个非常大的Git仓库(差不多20K提交,3GB +,10 +作者),我正在从Subversion迁移到Github。我已经使用nirvdrum's svn2git(而不是svn2git on gitorious)移动了回购,但是我没有设置作者文件来映射作者。还没有人使用这个回购,还没有人克隆它,我已经告诉所有人我做出的改变会破坏任何克隆。

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

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

1 个答案:

答案 0 :(得分:0)

this answer扩展为Rewrite author of Git commits,以便在回购中包含多位作者和所有修订。

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