如何撤销Git提交用户名与邮箱的批量修改操作?
撤销全量提交用户名/邮箱修改,恢复后修改特定提交
第一步:找回修改前的历史状态
执行git reflog,查看本地仓库的所有操作记录,找到你执行全量修改脚本之前的提交哈希值(比如输出里HEAD@{N}对应的哈希,记为OLD_COMMIT)。
第二步:恢复到修改前的仓库状态
- 如果修改还没推送到远程仓库,直接执行:
git reset --hard OLD_COMMIT - 如果已经推送到远程仓库,执行完上面的reset命令后,需要强制推送覆盖远程历史(注意:这会改写远程分支历史,必须确保团队内所有人知情并同步操作):
git push --force origin 你的分支名称
第三步:仅修改特定提交的用户名/邮箱
恢复完成后,用交互式rebase定位并修改目标提交:
- 找到要修改的提交的父提交哈希(即目标提交的上一个提交),执行:
git rebase -i 父提交哈希 - 在弹出的编辑器中,把要修改的那一行的
pick替换成edit,保存并退出编辑器。 - 执行修改命令,替换为目标用户名和邮箱:
git commit --amend --author="目标用户名 <目标邮箱>" --no-edit - 继续完成rebase流程:
git rebase --continue - 若有多个需要修改的提交,重复步骤2-4即可。
- 最后要同步到远程的话,再次执行强制推送(注意团队协作):
git push --force origin 你的分支名称
内容的提问来源于stack exchange,提问作者fatpanda2049
相关产品推荐
相关产品推荐

