【问题标题】:How to combine users in git repo?如何在 git repo 中合并用户?
【发布时间】:2012-12-20 07:41:23
【问题描述】:

我有一个 git repo,我从不同的计算机提交,所以我最终显示为 2 个不同的贡献者,但实际上它是一个用户 - 我。如何将这些用户合二为一?

【问题讨论】:

    标签: git git-config


    【解决方案1】:

    您必须在两台机器上将您的用户名和电子邮件设置为相同:

    git config --global user.name <name>
    git config --global user.email <email>
    

    如果您想更改现有提交,请注意您将重写历史记录。

    你可以参考这个答案:How do I rewrite committer names in a git repository?

    【讨论】:

    • 如何处理现有的提交?
    • @GulaevValentin - 最好不要管他们。但是,如果你想改变 - stackoverflow.com/questions/1566809/…
    • 按照 nulltoken 的建议使用 .mailmap 文件。它正是为此目的而设计的,人们会随着时间和地点更改他们的电子邮件签名。
    • @PhilipOakley - 我认为这不适用于这里。 OP,作为新手,没有设置用户和电子邮件,并且在两台机器上是不同的(默认的主机名等)。 OP 不需要添加两个邮件 ID(在这种情况下,它甚至不是两个有效的电子邮件 ID)。当然,这是基于我的理解。
    • @PhilipOakley 它适用于我的情况,非常感谢您的回答。
    【解决方案2】:

    如果您只关心将所有提交链接到您的 GitHub 帐户,那么将两个电子邮件地址添加到您的帐户就足够了。

    如果你真的想修改所有现有的提交,不要这样做,除非代码没有被其他人真正使用过,因为你要重写每个提交,存储库中的全部历史记录。

    如果您仍想这样做,您应该使用git-filter-branch --env-filter,如this answer 所示。

    【讨论】:

      【解决方案3】:

      @SergiuDumitriu 正确地将您的所有电子邮件添加到您的帐户 https://github.com/settings/emails。这样,您所有提交的工作(来自不同的电子邮件)都将链接到您的 GitHub 帐户,并汇总在您贡献的每个存储库的“图表”部分中。

      但是,为了在您计算机上的本地存储库中也能实现这一点,您必须将 .mailmap 文件提交到存储库的根目录,该文件会将您的电子邮件链接在一起。一旦可以在 git shortlog 文档中找到有关此 git 功能和文件格式的更多信息。

      以这种方式运行$ git shortlog -s -n 将正确聚合您的所有身份。

      【讨论】:

      • 非常感谢您的回答,正是因为 $ git shortlog -s -n 它帮助我了解 .mailmap 的工作原理
      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      相关资源
      最近更新 更多