代码之家  ›  专栏  ›  技术社区  ›  Sølve T. DisgruntledGoat

全年无关联承诺。是否可以保留?

  •  1
  • Sølve T. DisgruntledGoat  · 技术社区  · 8 年前

    似乎我的Git配置已经改变了,所以所有提交都是以我的真实姓名进行的,但没有链接到我的GitHub帐户。在项目和页面贡献的统计数据中,我已经“丢失”了超过1500个承诺。

    我现在已经设法将我的帐户与正确的电子邮件链接起来,但是其他提交有我们本地域的电子邮件,例如:“user@server.local”。

    是否可以将所有这些承诺链接到我的真实帐户?

    2 回复  |  直到 8 年前
        1
  •  2
  •   David Z    8 年前

    Github给出 a procedure for changing the author information (including email) of past commits . 基本上,您可以在此脚本的适当位置输入信息:

    #!/bin/sh
    
    git filter-branch --env-filter '
    
    OLD_EMAIL="user@server.local"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-email@example.com"
    
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    

    然后运行它。各种选项在手册页中进行了描述。 git help filter-branch ,如果你好奇,简而言之, --env-filter 告诉Git您将修改与提交关联的环境变量, --tag-name-filter cat 告诉它不要更改标记的内容,以及 --branches --tags 告诉Git应用可从存储库中的所有分支和标记访问的提交更改。完成后,您可以检查历史记录并强制执行:

    git push --force --tags origin 'refs/heads/*'
    

    运行该命令将有效地删除和替换GitHub上存储库的整个历史记录。如果有人分叉或克隆了它,这会给他们带来问题,因此在这种情况下,您可能实际上希望在运行该命令之后用您的历史启动一个新的存储库,并取消对旧存储库的预测。

        2
  •  0
  •   csraim326    8 年前

    在我看来,如果您在GitHub上设置了一个repo,将其建立为一个新的项目远程程序,然后推送您的项目,那么所有提交历史记录都将携带到远程程序。