Git rebase 为许多提交添加作者和电子邮件地址

时间:2021-02-09 09:55:53

标签: github rebase author

我已经参与了一个月的小组项目。

我认为我的提交是使用我的 GitHub 相关电子邮件地址以我的名义提交的,并且我在我的主要 GitHub 提要上收到了正在做出贡献的指示。但是,当我去检查项目时,我的名字下没有列出任何提交,结果证明所有提交都是在我的计算机用户名 "Author: UserName <UserName@UserName-MacBook-Pro.local> " 下进行的。不幸的是,由于该作者与我的 Github 帐户无关,因此该项目不会在贡献统计数据中公开承认这些提交。

我一直在尝试使用 git rebase -i --root 完成所有提交,分配我的每个提交进行编辑,然后应用 git commit --amend --author "MyName <MyGitHubEmailAddress@gmail.com>",但我一直遇到来自同行的其他提交的问题,我选择而不是在交互式变基期间编辑

我是在处理这个错误还是有更简单的方法来将我的作者身份分配给这些提交?

感谢您花时间阅读本文,任何想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

您首先需要通过更新您的配置来更新您的 Git 作者信息:

https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address

虽然更改您的 Git 配置将解决所有未来的提交,但将过去的提交归因于您的帐户的唯一方法是重写您的存储库历史记录。这需要在全球范围内更改您的电子邮件地址。 Git 自己的文档涵盖了这一点:

https://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#_changing_email_addresses_globally

git filter-branch --commit-filter '
        if [ "$GIT_AUTHOR_EMAIL" = "UserName@UserName-MacBook-Pro.local" ];
        then
                GIT_AUTHOR_NAME="MyName";
                GIT_AUTHOR_EMAIL="MyGitHubEmailAddress@gmail.com";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

强制将更正的历史记录推送到您的遥控器:

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

重要提示:如果执行不正确,强制推送会给您的存储库带来混乱,并且在您不是所有者和唯一合作者的存储库中被认为是不好的做法。