执行Git提交历史重置后,如何恢复原始提交记录?
恢复原始提交历史的方法
如果你的修改还没推送到远程仓库,完全可以恢复到rebase操作前的状态,具体步骤如下:
方法一:利用Git引用日志(reflog)恢复
Git会记录所有HEAD的变更历史,哪怕是被覆盖的提交也能找到:
- 运行
git reflog,查看所有HEAD的操作记录,找到rebase执行前的那条记录(格式类似HEAD@{n},n为数字,备注里会标注你执行rebase前的状态) - 找到对应记录的哈希值或
HEAD@{n}标识后,执行git reset --hard <哈希值/HEAD@{n}>,就能直接回到rebase操作前的原始提交历史
方法二:通过标签恢复(若之前有打标签)
如果你在执行rebase前,给最后一次有效提交打了标签,直接运行git reset --hard <标签名>即可快速恢复
补充:修改作者信息同时保留原始提交日期的正确命令
如果你之后还要重新修改作者信息,又不想破坏原始提交时间,可以用这条命令:git rebase -r --root --exec "GIT_COMMITTER_DATE=\"$(git show --no-patch --format=%ci HEAD)\" git commit --amend --no-edit --reset-author"
它会通过GIT_COMMITTER_DATE变量把提交者日期重置为原始提交日期,同时更新作者信息,避免所有提交显示为同一时间。
内容的提问来源于stack exchange,提问作者cestpasmoi
相关产品推荐
相关产品推荐

