首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写Git的第一次提交

重写Git的第一次提交
EN

Stack Overflow用户
提问于 2014-10-03 01:01:12
回答 1查看 68关注 0票数 0

我有一个旧的CVS回购,我已经转换成GIT,在这样做,我意识到我的一些用户名是混乱的.我可以用.mailmap来修复一些东西,我还使用了Atlassian Stash和一个插件,它可以让我看到哪些人提交了什么等等的很好的图表。问题是,按照插件说明的手风琴:

  1. 我如何用不同的电子邮件合并两个实际上是一个人的用户?从存放2.5.0开始,您可以使用存储库中的.mailmap文件来完成此操作。请注意,这只会影响邮件地图文件添加后的提交。在Git中更改全局.mailmap文件不会有帮助(请参阅这里的详细信息)。

因此,这意味着如果我添加我的.mailmap文件,它实际上不会对我3年的历史提交产生任何影响。

我想要做的是重写提交历史,修改第一次提交,并将.mailmap文件添加到回购中,然后使用强制推送覆盖存储在服务器上的内容。

  • 这是正确的做法吗?
  • 我需要运行哪些Git命令才能添加一个.mailmap文件,然后替换我的远程回购
EN

回答 1

Stack Overflow用户

发布于 2014-10-03 01:20:44

Git过滤支路

如果您正在重写所有的历史记录,您只需更改名称/电子邮件,而不是使用.mailmap。

如果要添加邮件映射,也可以使用筛选器分支,但使用的形式不同。这将类似于您想要重写电子邮件而不使用邮件地图。

代码语言:javascript
复制
      git filter-branch --env-filter '

      DUP_EMAIL="email_that_you_want_to_change"
      CORRECT_EMAIL="email_you_would_rather_have"

      if [ "$GIT_COMMITTER_EMAIL" = "$DUP_EMAIL" ]
      then
            export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
      fi
      if [ "$GIT_AUTHOR_EMAIL" = "$DUP_EMAIL" ]
      then
            export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
      fi
      ' --tag-name-filter cat -- --branches --tags
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26171866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档