如何回退到历史Git提交且不丢失后续提交?
临时查看旧提交项目结构且保留后续提交的方法
别用git reset --hard(这个操作会移动当前分支指针,导致后续提交从分支中“消失”,虽然能通过reflog找回但完全没必要),推荐两种更安全的方式:
方法一:切换到旧提交(分离头指针状态)
- 先记好当前在用的分支名(比如
main或master),执行命令:
此时项目会切换到该提交对应的状态,你可以随意查看项目结构。git checkout <commit-ID> - 查看完要回到最新提交,直接切回原分支就行:
git checkout main # 替换成你的实际分支名 # 或者用Git 2.23+支持的git switch git switch main - 注意:分离头指针状态下如果改了代码并提交,会生成游离的提交;要是想保留这些修改,执行
git checkout -b 新分支名就能把修改存到新分支里。
方法二:创建独立工作目录(同时保留新旧版本)
如果需要同时查看旧版本和最新版本的项目,不用来回切换,用git worktree更方便:
- 执行命令在外部生成一个对应旧提交的独立工作目录:
其中git worktree add ../old-project-dir <commit-ID>../old-project-dir是你指定的新目录路径,执行后该目录下就是旧提交的项目内容,完全不影响原项目目录的状态。 - 用完后清理:先删掉创建的目录,再执行命令清理Git的工作树记录:
rm -rf ../old-project-dir git worktree prune
内容的提问来源于stack exchange,提问作者user19712456
相关产品推荐
相关产品推荐

