切换到旧提交,同时保证当前修改不丢失

在 Git 中,可以通过以下几种方式切换到之前的提交,同时保留当前的提交(即不丢失工作进度):

1. 使用 git checkout 创建临时分离头指针(推荐用于查看)

bash 复制代码
git checkout <commit-hash>

这会让你进入"分离头指针"状态,你可以查看旧代码。要返回最新提交:

bash 复制代码
git checkout <原来的分支名>

2. 使用 git branch 创建新分支(最安全)

bash 复制代码
git branch temp-branch <commit-hash>  # 创建临时分支指向旧提交
git checkout temp-branch              # 切换到临时分支

这样你的原分支和新提交都完好保存,可以在临时分支上操作。

3. 使用 git stash 暂存当前修改(修改未提交)

bash 复制代码
git stash          # 保存当前工作
git checkout <commit-hash>  # 切换到旧提交
# 查看或操作后...
git checkout -     # 回到原分支
git stash pop      # 恢复暂存的修改

4. 使用 git reset --soft(可逆操作)

如果想在当前分支"回退"到旧提交但保留所有更改在暂存区:

bash 复制代码
git reset --soft <commit-hash>

之后可以用 git reset ORIG_HEAD 撤销这次回退。

注意事项:

  • 所有方法都不会丢弃提交,只要提交还在 reflog 中(默认保留90天)
  • 要永久丢弃提交需要使用 git reset --hardgit push -f(慎用)
  • 推荐优先使用创建新分支的方式,这是最安全的选择

可以通过 git reflog 查看所有历史操作记录,找回"丢失"的提交。

相关推荐
摇滚侠7 小时前
VScode 提交代码 Git
git
YuforiaCode9 小时前
移除原有 Git 仓库关联,在IDEA中重新初始化 Git 并推送到新仓库(详细图解、包含相关问题的解决办法)
git
UIUV9 小时前
Git程序员入门笔记:从零开始掌握分布式版本控制
git
星光不问赶路人9 小时前
彻底清理 Git 分支:从查看到批量删除无效分支的全流程指南
git·github
如果是君14 小时前
【git使用】ubuntu下利用git工具提交一个工程
linux·git·ubuntu
吃鱼吃鱼吃不动了15 小时前
常用的 git 命令
git
迷路爸爸18016 小时前
Git Commit Message 规范:写出清晰、可维护的提交记录
git·python
前端赵哈哈16 小时前
Git 本地仓库操作指南:将未提交文件复刻至新分支(无需关联远端)
前端·git·github
神秘的猪头16 小时前
git应用初体验
git
麻辣璐璐1 天前
【新手小白版】Gerrit使用教程
git·gerrit·新手