git - 如何更改多个提交的作者和提交者姓名/电子邮件?

标签 git version-control git-filter-branch git-rewrite-history

如何更改一系列提交的作者?

最佳答案

注意:此答案会更改 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/

相关文章:

xcode - 您可以禁用 Xcode 4 中的版本控制集成吗?

git - 使用 `git filter-branch` 时是否有更好的匹配方法?

git - 清理已删除文件的 git 历史记录,保留重命名的文件历史记录

git - 是否可以动态生成git日志格式?

css - 使用 LESS 和版本控制 : Should generated CSS be included in a repo?

linux - 如何让 git-svn 使用特定版本的 SVN?

visual-studio-2008 - 决定源代码控制软件

git - 无效的作者/提交者行 - 电子邮件前缺少空格

git - 在 VSTF 构建中查看 git-lfs 文件

java - 如何通过从java给出变量来在bash脚本中执行git命令?