配置Git Bash后,如何将过往未关联GitHub账号的提交归为己有?
如何将历史提交关联到你的GitHub账号
当然可以把之前那些未关联账号的提交归到你名下!不过有个重要前提:如果这是公共仓库或者有其他协作者,一定要先和他们沟通确认——因为修改提交历史会覆盖远程仓库的记录,可能影响其他人的工作。
操作步骤
首先确保你本地已经克隆了仓库,并且Git配置已经是正确的(你应该已经完成这一步了,不过可以用git config user.name和git config user.email确认下,输出要和你的GitHub账号信息完全一致)。
- 创建批量修改脚本
在仓库根目录下新建一个名为change-author.sh的文件,把下面的代码复制进去,记得替换成你自己的信息:
#!/bin/sh git filter-branch --env-filter ' # 替换成你之前提交用的旧邮箱 OLD_EMAIL="your-old-email@example.com" # 替换成你的GitHub用户名 CORRECT_NAME="YourGitHubUsername" # 替换成你的GitHub绑定邮箱 CORRECT_EMAIL="your-github-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
- 运行脚本
先给脚本添加执行权限:
chmod +x change-author.sh
然后执行脚本:
./change-author.sh
验证修改结果
运行git log查看提交历史,确认所有旧提交的作者信息已经变成你正确的用户名和邮箱了。强制推送到远程仓库
因为我们修改了提交历史,需要用强制推送覆盖远程仓库的记录:
git push --force --tags origin 'refs/heads/*'
额外注意事项
- 如果你的旧提交用了多个不同的邮箱或用户名,可以修改脚本里的条件,或者多次运行脚本分别处理不同的旧信息。
- 推送完成后,GitHub的Contributors页面可能需要几分钟时间更新,刷新后就能看到这些提交归到你的账号下了。
- 要是担心操作风险,可以先克隆一个仓库的副本,在副本上测试修改,确认没问题再操作原仓库。
这样操作后,所有之前的提交都会正确关联到你的GitHub账号,能清晰展示你的工作成果,避免归属争议~
内容的提问来源于stack exchange,提问作者Myroslav Vyspyansky
相关产品推荐
相关产品推荐

