在Github上更改已推送的提交的用户名

33

我向一个新分叉的 Github git 库进行了推送,但是在提交后我发现我的用户名不正确。我推送的用户名是"Brock Woolf",但实际上应该是 brockwoolf,这是我的 Github 用户名。

我已经像这样在本地更改了默认设置:

git config --global user.name "brockwoolf"

我如何在已经推送的更改中更改用户名?


当然,您可以随意处理自己的项目,但是该配置参数是user.name,而不是“用户名”,即“用户的名称”。使用真实姓名非常普遍。 - Cascabel
我知道,但是对于Github,你需要使用你的用户名,否则它不会关联Gravatars。 - Brock Woolf
Git中如何更改提交的作者?[重复问题] (https://dev59.com/73RB5IYBdhLWcg3wAjNH) - user456814
1
@BrockWoolf,不,"name"字段在GitHub上对任何东西都没有实际影响;它是电子邮件地址确定您的gravatar和身份。 - hobbs
4个回答

31

如果已经推送了更改并且其他人已经拉取了代码,那么你只能接受这个事实。但是,如果没有人拉取代码(也就是说,如果你意识到自己在推送后犯了错误),你可以修改你的提交:

git commit --amend

请确保您不会向提交中添加任何新更改 - 不要使用 -a,也不要先使用 git add。然后您可以强制推送,因为这是非快进更改:

git push -f
如果有人已经拉取了错误名称的提交...这可能不会真正让他们出现问题,因为将其与包含原始提交的内容进行合并应该很容易;补丁是相同的。然而,如果那个人曾经向您的仓库推送过更改,他们将推送该合并 - 同时在其一侧包含原始提交。如果最终您的仓库中同时存在两个名称,这就有点失去了重新命名的目的。(这正是我在回答者评论中描述的问题。)

2
“-f”在push的man手册中没有说明。它具体是做什么的?类似于checkout -f这样的操作吗? - Jonathan Dumaine
@Jonathan:是的,就在使用说明中,标记为 [ -f | --force ],并且在选项部分的下面十个左右的位置下面有短名称和长名称的描述。它执行了我在答案中建议的操作:非快进式推送通常会被拒绝,但这将强制接受。 - Cascabel
我撤回我的问题——它肯定就在那里。我一定是快疯了。也许我看错了手册哈哈。 - Jonathan Dumaine
@Jonathan:哈哈,好的。我在想你是不是在看v0.99的手册页或者其他什么东西。 - Cascabel
@Cascabel,我应该如何处理多个已推送的提交? - tonwayer

31

正如这里所指出的,你可以这样做


git commit --amend --author="Author Name <email@address.com>"
git push -f

可以,与GitLab远程仓库(可能是GitHub/GitLab)独立使用。 - bcag2

4
甜蜜,我搞定了:

git commit -a --amend
git pull
git push

如果你有更好的方法,请随意回答,我会将你的答案标记为正确。


2
这实际上不会改变原始提交。git pull 拉取 origin/master 的原始位置,即 master@{1},也就是原始提交。然后将其合并。合并顺利进行,因为两边都做了完全相同的更改;唯一的区别是提交的名称和日期。两个提交仍然存在。 - Cascabel
1
(除非您还提交了其他更改并更改了名称,否则您可能不需要“-a”...) - Cascabel
@Jefromi:感谢您的评论。 是的,我可能不需要“-a”开关。 - Brock Woolf

0
以下是在推送更改后更新git上作者名称的命令:
git commit --amend --author="Author Name <commit-name>"
git push -f

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接