一年充满了未链接的提交。可以保留吗?

时间:2018-05-23 21:20:58

标签: git github commit

因为看起来我的git配置已经以某种方式改变了所以所有提交都是我的真实姓名但没有链接到我的github帐户。我有超过1500个提交,#34;丢失"如在项目的统计数据和我的页面贡献。

我已设法立即将我的帐户与正确的电子邮件关联,但其他提交有我们的本地域名电子邮件,例如:" user@server.local"。

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

2 个答案:

答案 0 :(得分:2)

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上的存储库的整个历史记录。如果人们分叉或克隆它,这将导致它们出现问题,因此在这种情况下,您可能实际上想要在运行命令后使用您拥有的历史记录启动新的存储库,并弃用旧的存储库。

答案 1 :(得分:0)

在我看来,如果你在github上设置一个repo,将它建立为一个新的项目远程,然后推送你的项目,所有的提交历史记录将被带到遥控器。