Git更改未推送提交的作者

Git更改未推送提交的作者,git,commit,Git,Commit,我有两次提交(已经提交了错误的电子邮件),因此我的推送被拒绝。 如何在不丢失更改的情况下更改这些提交人的电子邮件?已经有了这个答案 使用交互式重基 你可以 git rebase -i -p <some HEAD before all of your bad commits> 继续调整基础 您可以在此处添加--no edit 这样命令将: git commit--amend--author“New author Name”--无需编辑\ git rebase--继续吗 单一提交 正

我有两次提交(已经提交了错误的电子邮件),因此我的推送被拒绝。
如何在不丢失更改的情况下更改这些提交人的电子邮件?

已经有了这个答案

使用交互式重基 你可以

git rebase -i -p <some HEAD before all of your bad commits>
继续调整基础

您可以在此处添加
--no edit
这样命令将:

git commit--amend--author“New author Name”--无需编辑\
git rebase--继续吗
单一提交 正如一些评论者所指出的,如果您只想更改最近的提交,则不需要使用rebase命令。照办

git提交--amend--author“New author Name”
这会将作者更改为指定的名称,但提交者将在
git config user.name
git config user.email
中设置为您配置的用户。如果要将提交者设置为您指定的内容,这将同时设置作者和提交者:

git-c user.name=“新作者姓名”-c user.email=email@address.com提交--修改--重置作者
关于合并提交的说明 我最初的回答有一点瑕疵。如果在当前的
和您的
之间有任何合并提交,那么
git-rebase
会将它们展平(顺便说一句,如果您使用GitHub-pull请求,您的历史记录中将有大量合并提交)。这通常会导致非常不同的历史记录(因为重复的更改可能会被“重定基址”),在最坏的情况下,它会导致
git-rebase
要求您解决困难的合并冲突(这些冲突可能已经在合并提交中解决)。解决方案是使用
-p
标志来
git-rebase
,这将保留历史记录的合并结构。
git-rebase
的手册页警告说,使用
-p
-i
可能会导致问题,但在
BUGS
部分,它说“编辑提交和重新编写提交消息应该可以正常工作。”

我在上面的命令中添加了
-p
。对于仅更改最近提交的情况,这不是问题


在这篇文章中:

看一看,然后这个问题应该以重复的形式结束,而不是复制信息。看到了吗。。。想复制国旗太晚了-对不起
git rebase --continue