如何更改一系列提交的作者?
最佳答案
注意:此答案会更改 SHA1,因此在已推送的分支上使用它时要小心。如果您只想修复名称的拼写或更新旧电子邮件,Git 可让您在不使用 .mailmap
重写历史记录的情况下执行此操作。 .参见 my other answer .
使用 rebase
首先,如果您还没有这样做,您可能想在 git-config 中修复您的名字:
git config --global user.name "New Author Name"
git config --global user.email "<email@address.example>"
这是可选的,但它也将确保重置提交者名称,假设这是您需要的。
要使用 rebase 重写一系列提交的元数据,请执行
git rebase -r <some commit before all of your bad commits> \
--exec 'git commit --amend --no-edit --reset-author'
--exec
将运行 git commit
重写每次提交后的步骤(就像您重复运行 git commit && git rebase --continue
)。
如果您还想更改您的第一个提交(也称为“root”提交),则必须添加 --root
到 rebase 调用。
这会将提交者和作者都更改为您的 user.name
/user.email
配置。如果您不想更改该配置,可以使用 --author "New Author Name <email@address.example>"
而不是 --reset-author
.请注意,这样做不会更新提交者 - 只会更新作者。
单一提交
如果您只想更改最近的提交,则不需要 rebase 。只需修改提交:
git commit --amend --no-edit --reset-author
整个项目历史
git rebase -r --root --exec "git commit --amend --no-edit --reset-author"
对于较旧的 Git 客户端(2020 年 7 月之前)
-r,--rebase-merges
对你来说可能不存在。作为替代,您可以使用 -p
.注意 -p
存在严重问题,现已弃用。
关于git - 如何更改多个提交的作者和提交者姓名/电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50813986/