2010-08-31 26 views
2

我最近克隆了一个hg repo到git,所以我可以将它发布在github上。很多电子邮件地址都是错误的,我想在任何人分叉这个项目之前使用git rebase来改变它们。如果我改变他们,我该如何着手推动新的,完全重新设计的回购给github?我可以只是rebase然后git push?我必须先删除该项目吗?在Git上用github改变电子邮件地址

回答

3

差不多。您需要使用git push -f(或--force)才能覆盖旧的历史记录。


在一个完全不同的注意:为什么你会“喜欢用git rebase”更改提交者的电子邮件地址,而不是git filter-branch --env-filter

+0

我使用术语rebase来包含任何重写提交。 – 2010-09-01 00:20:35

+0

这样做后github列出每个提交作者和提交? – 2010-09-01 04:58:20

+1

@Arthur:当github不同时,github会显示两个身份。当使用'git filter-branch --env-filter'时,一定要更新GIT_COMMITTER_NAME和GIT_COMMITTER_EMAIL,以及GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL。 – 2010-09-01 05:51:27

0

一种方式做到这一点是:

  • 创建包含自回购成立以来的所有补丁.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

我只是测试它在我的回购,而且好像上面已经做到了这一点。 让我知道你是否想要更多的细节。

重要:你只能这样做你曾经发布之前库,而不是一旦其他人已经从中拉 - 我看到你的问题的状态已经,但是这仅仅是重申的重要性这个:)

1

我没有足够的评价Jörg的帖子,但github有一个很好的shell脚本,使用git filter-branch --env-filter帮助我做同样的事情在http://help.github.com/changing-author-info/。这是Jörg职位上其他评论者所谈论的一个例子。这对我有效。

相关问题