提交作者在执行 Git Squash 时不显示最近的提交者姓名

Commit Author Not showing recent commiter name when doing Git Squash

我有一个分支,很少有其他人完成的提交。我对同一分支进行了更多更改。现在我使用以下命令将所有提交压缩为一个提交。

git rebase -i HEAD~2

从显示的提交列表中更改了 从 pick 到 reword 的第一次提交 第二个从采摘到压扁 然后将提交消息修改为一些有意义的消息 git 推 --force

现在,当我在遥控器上看到 author/committer 姓名时,仍然显示旧作者姓名。我是最近的提交者,有什么办法可以把这个名字改成我的名字吗?

最简单的方法是使用 --reset-author 选项修改压缩的提交:

When used with -C/-c/--amend options, or when committing after a conflicting cherry-pick, declare that the authorship of the resulting commit now belongs to the committer. This also renews the author timestamp.

在您的情况下,您可以在将所有提交压缩为一个之后简单地执行此操作:

git commit --amend --no-edit --reset-author

这会将当前 user.nameuser.email 设置为提交的作者。

要在 git rebase 完成后 运行 git commit --amend --no-edit --reset-author 重写上次提交的作者。

如果你想重写所有变基提交,将选项 --exec 'git commit --amend --reset-author --no-edit' 附加到 git rebase

git rebase -i head~2 --exec 'git commit --amend --reset-author --no-edit'

待办事项列表将扩展为

pick 001111 foo
exec git commit --amend --reset-author --no-edit
pick 002222 bar
exec git commit --amend --reset-author --no-edit

如果你想重写一些变基的提交,在你想要的提交条目下面手动添加 exec git commit --amend --reset-author --no-edit。例如,

pick 001111 foo
pick 002222 bar
exec git commit --amend --reset-author --no-edit
pick 003333 baz