Git 变基以向许多提交添加作者和电子邮件地址

Git rebasing to add an author and email address to many commits

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

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

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

我是不是处理错了,或者是否有更简单的方法将我的作者身份分配给这些提交?

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

您首先需要通过更新您的配置来更新您的 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/*'

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