git 修改之前提交记录的某几次记录的账号和邮箱

修改 Git 提交记录的作者名和邮箱

最近在使用 Git 时,遇到了一个需求:修改某些提交记录中的提交名和邮箱。由于提交时误用了错误的姓名和邮箱,历史记录中的几次提交需要更新。发现使用 git rebase 结合 git commit --amend 是一种比较优雅的方式,可以灵活修改历史记录中的提交名和邮箱。

步骤记录

  1. 查看提交历史
    首先,使用 git log --oneline 查看了提交历史,找出需要修改的提交。例如,我发现最近的 3 次提交中,有 2 次提交信息需要修改。具体的命令如下:
    git log --oneline
    修改最近的 3 次提交中的第 1 次和第 3 次(可以通过 hash 来查看哪些提交记录)。

  2. 进入交互式 rebase
    使用 git rebase -i 进入交互式 rebase 模式,可以选择我想修改的提交。在这里,我选择了最近的 3 次提交:
    git rebase -i HEAD~3
    编辑器会打开一个列表,显示最近的 3 次提交记录:

pick 123abc 提交信息 1
pick 456def 提交信息 2
pick 789ghi 提交信息 3

我把第 1 次和第 3 次提交的 pick 改成 edit,表示我要修改这两次提交的详细信息:

edit 123abc 提交信息 1
pick 456def 提交信息 2
edit 789ghi 提交信息 3

保存并退出编辑器。

  1. 修改作者名和邮箱
    Git 会依次停在我标记为 edit 的提交上。首先,停在第 1 次提交,让我可以修改作者信息。然后使用了 git commit --amend 并指定新的作者名和邮箱:
    git commit --amend --author="John Doe <johndoe@example.com>"
    这个命令修改了该提交的作者信息。然后我继续 rebase:
    git rebase --continue
    Git 继续处理下一个标记为 edit 的提交,到了第 3 次提交时,重复上述步骤,修改了作者信息:
    git commit --amend --author="Jane Smith <janesmith@example.com>"
    再次运行 git rebase --continue,完成了所有修改。

  2. 推送到远程仓库
    完成本地的提交记录修改后,还需要将修改推送到远程仓库。由于这些提交已经在远程仓库中,使用了强制推送来覆盖之前的记录:
    git push --force

总结

通过 git rebase -i 和 git commit --amend --author,成功修改了指定提交记录的作者名和邮箱。

posted @ 2024-10-16 17:30  灵火  阅读(186)  评论(1编辑  收藏  举报