如何正确地更改GitHub中过去几个提交的提交作者? [英] How do I properly change the author of a commit for the past few commits in github?
本文介绍了如何正确地更改GitHub中过去几个提交的提交作者?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在过去的几天里,我使用了另一台笔记本电脑,我设置了Git并登录,但我不小心将我的用户名与错误的电子邮件一起使用。
今天我注意到我过去几天的提交没有显示在我的GitHub个人资料仪表板上,所以我检查了一下发生了什么,并注意到我使用了错误的电子邮件登录。
我尝试了几种不同的方法来修复它,但都不起作用。
1.
git rebase -i -p <The last commit with the good email>
则为每次提交。
git commit --amend --author="good name <good email>" --no-edit
git rebase --continue
不只是更改提交的作者,它使用我的Good电子邮件进行了新的提交,但没有更改旧的。
2.
git filter-branch --env-filter 'if [ "$GIT_AUTHOR_EMAIL" = "incorrect@email" ]; then
GIT_AUTHOR_EMAIL=correct@email;
GIT_AUTHOR_NAME="Correct Name";
GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL;
GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; fi' -- --all
如here所示,但它没有执行任何操作...
3. 在其中一个答案中,有人提到我应该使用与我使用的命令相同的命令。
git rebase -i -p <The last commit with the good email>
但没有&p;-p&q;。我尝试过,但它也进行了新提交,并且不保留旧提交和旧日期。
因此,我需要帮助获取我历史记录的所有新提交,并修复旧提交以获得好的电子邮件。
推荐答案
感谢所有帮助过我们的人!我最终得到了很多不同的方法,但对我来说并不奏效,因为事情搞砸了,我不得不多次将回购重新设置为更改前的状态。
最后,我联系了Github Support,这是他们告诉我的,它奏效了。我把它贴在这里,希望它能帮助有类似问题的人。
1-在运行此脚本之前,您需要:
显示在要更改的作者/提交者字段中的旧电子邮件地址 您希望将此类承诺归因于的正确名称和电子邮件地址 2-创建存储库的全新裸克隆: git clone --bare <external repo URL>.git
cd <reponame>.git
3-复制并粘贴脚本,根据您收集的信息替换以下变量:
OLD_EMAIL
CORRECT_NAME
CORRECT_EMAIL
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
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
4-按Enter键运行脚本。
5-查看新的Git历史记录中的错误。
6-将更正的历史推送到:
git push --mirror <GitHub repo URL>.git
7-清理临时克隆:
cd ..
rm -rf <reponame>.git
这篇关于如何正确地更改GitHub中过去几个提交的提交作者?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文