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