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

Year full of un-linked commits. Possible to retain?

因为我的 git 配置似乎以某种方式自行更改,所以所有提交都是我的真实姓名,而不是 link 到我的 github 帐户。在项目统计和我的页面贡献中,我有超过 1500 次提交 "lost"。

我现在已经设法 link 我的帐户使用正确的电子邮件,但其他提交有我们本地域的电子邮件,例如:"user@server.local"。

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

在我看来,如果您在 github 上设置一个存储库,将其建立为项目的新远程,然后推送您的项目,所有提交历史记录都将转移到远程。

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