2

我最近克隆了一个 hg repo 到 git,所以我可以在 github 上发布它。很多电子邮件地址都是错误的,我想在有人分叉这个项目之前使用 git rebase 来更改它们。如果我改变它们,我该如何将新的、完全重新定位的 repo 推送到 github?我可以重新设置基准然后 git push吗?我必须先删除项目吗?

4

3 回答 3

3

几乎。您需要使用git push -f(或--force) 来覆盖旧的历史记录。


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

于 2010-08-31T19:27:12.467 回答
1

我还没有足够的声誉来评论 Jörg 的帖子,但是 github 有一个很好的 shell 脚本git filter-branch --env-filter,它可以帮助我在http://help.github.com/changeing-author-info/上做同样的事情。这是 Jörg 帖子上其他评论者谈论的一个例子。这对我有用。

于 2011-04-02T19:21:45.657 回答
0

一种方法如下:

  • 创建一个 .mbox 文件,其中包含自 repo 开始以来的所有补丁: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

我刚刚在我的一个 repo 上对其进行了测试,似乎上面的方法已经成功了。如果您想了解更多详情,请告诉我。

重要提示:您应该只在发布该存储库之前执行此操作,而不是在其他人已经从中撤出之后才执行此操作-我看到您的问题已经说明了这一点,但这只是为了重申这一点的重要性:)

于 2010-08-31T18:30:37.317 回答