Git更改未推送提交的作者[重复]

Posted

技术标签:

【中文标题】Git更改未推送提交的作者[重复]【英文标题】:Git change author of not pushhed commits [duplicate] 【发布时间】:2017-04-20 19:07:44 【问题描述】:

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

【问题讨论】:

看看***.com/questions/750172/… 【参考方案1】:

已经有这个答案了

使用交互式变基

你可以的

git rebase -i -p <some HEAD before all of your bad commits>

然后在 rebase 文件中将所有错误提交标记为“编辑”。如果您还想更改第一次提交,则必须手动将其添加为 rebase 文件中的第一行(遵循其他行的格式)。然后,当 git 要求您修改每个提交时,请执行

 git commit --amend --author "New Author Name <email@address.com>" 

编辑或关闭打开的编辑器,然后执行

git rebase --continue

继续变基。

您可以通过附加 --no-edit 来跳过此处完全打开编辑器 这样命令将是:

git commit --amend --author "New Author Name <email@address.com>" --no-edit && \
git rebase --continue

单次提交

正如一些评论者所指出的,如果您只想更改最近的提交,则不需要 rebase 命令。做吧

 git commit --amend --author "New Author Name <email@address.com>"

这会将作者更改为指定的名称,但提交者将设置为您在git config user.namegit config user.email 中配置的用户。如果您想将提交者设置为您指定的内容,这将同时设置作者和提交者:

 git -c user.name="New Author Name" -c user.email=email@address.com commit --amend --reset-author

关于合并提交的注意事项

我原来的回复有一点小瑕疵。如果当前的HEAD 和你的&lt;some HEAD before all your bad commits&gt; 之间有任何合并提交,那么git rebase 会将它们展平(顺便说一下,如果你使用 GitHub 拉取请求,你的历史)。这通常会导致非常不同的历史记录(因为重复的更改可能会“重新调整”),在最坏的情况下,它可能会导致git rebase 要求您解决困难的合并冲突(可能已经在合并中解决了)提交)。解决方案是对git rebase 使用-p 标志,这将保留您历史记录的合并结构。 git rebase 的联机帮助页警告说,使用 -p-i 可能会导致问题,但在 BUGS 部分它说“编辑提交并重新编写提交消息应该可以正常工作。”

我已将-p 添加到上述命令中。对于您只是更改最近提交的情况,这不是问题。

在这篇文章中:Change the author and committer name and e-mail of multiple commits in Git

【讨论】:

那么问题应该作为副本关闭,而不是复制的信息。见meta.stackexchange.com/questions/10841/… 是的...考虑到重复标志为时已晚-.-抱歉

以上是关于Git更改未推送提交的作者[重复]的主要内容,如果未能解决你的问题,请参考以下文章

更改 Git 提交的日期时间 [重复]

在每次提交中更改邮件地址 [重复]

Git rebase 更改作者? [复制]

更改 git 合并分支冲突消息 [重复]

忽略或跳过 Git 上的某些提交 [重复]

Git合并提交[重复]