当前位置: 首页 > news >正文

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

在 Git 中,可以通过以下几种方式切换到之前的提交,同时保留当前的修改

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

git checkout <commit-hash>

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

git checkout <原来的分支名># 返回上一次分支,类似bash的cd -
git checkout -

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

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

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

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

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

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

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

git reset --soft <commit-hash>

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

注意事项:

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

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

相关文章:

  • Qt客户端技巧 -- 窗口美化 -- 窗口阴影
  • Truffle 和 Ganache 使用指南
  • 龙石数据中台V3.5.1升级 | 数据实时收集来了!
  • 使用VuePress2.X构建个人知识博客,并且用个人域名部署到GitHub Pages中
  • 从入门到进阶:Python 学习参考书的深度解析
  • 全面理解 Linux 内核性能问题:分类、实战与调优策略
  • MySQL基本操作
  • 山洪径流过程及洪水淹没数值模拟
  • [Java恶补day17] 41. 缺失的第一个正数
  • Meta Prompting 完整指南
  • 1.3 编译程序:单个C文件和多个C文件
  • 编译构建C++程序时ABI一致性问题
  • Java设计模式之状态模式详解
  • Unity基础-数学向量
  • NY118NY120美光固态闪存NY124NY129
  • 高股息打底+政策催化增强+永续经营兜底
  • 每日算法 -【Swift 算法】电话号码字母组合
  • CSS6404L 在物联网设备中的应用优势:低功耗高可靠的存储革新与竞品对比
  • 本机无法远程别的计算机的方法
  • MySQL查询语句(续)
  • 劳动仲裁院内部网站建设/推广普通话
  • 网站搜索框代码怎么做/快速排名seo软件
  • 网络绿化网站建设哪家权威/seo网站推广优化
  • 日照网站建设官方网站/百度app下载安装 官方
  • 每个城市建设规划在哪个网站/销售课程视频免费
  • 网站建设工作报告/seo研究协会网