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

git回退到某个版本git checkout和git reset命令的区别

在这里插入图片描述

文章目录

      • 1. `git checkout <commit>`
      • 2. `git reset --hard <commit>`
      • 两者的区别总结
      • 推荐使用场景*

在使用 Git 回退到某个版本时, git checkout <commit>git reset --hard <commit> 是两种常见的方式,但它们的用途和影响有很大的区别:


1. git checkout <commit>

  • 作用:
    将当前工作目录切换到指定的 <commit> 版本,同时会进入一种“分离 HEAD”(detached HEAD)状态。
  • 特点:
    • 不会改变分支的提交历史。
    • 适用于临时查看某个历史版本,例如查看旧代码或测试某个版本。
    • 在“分离 HEAD”状态下,你所做的更改如果不另存为新的分支,可能会丢失。
  • 影响范围:
    • 工作目录会被更新为 <commit> 指定的内容。
    • 不影响当前分支和提交记录。

示例

git checkout <commit>
# 切换到某个版本,HEAD 不在任何分支上。

如果需要保留更改,可以创建一个新分支:

git checkout -b new-branch <commit>

2. git reset --hard <commit>

  • 作用:
    将当前分支直接强制回退到指定的 <commit>丢弃之后的所有更改
  • 特点:
    • 会修改当前分支的提交历史。
    • 危险操作:会删除 <commit> 之后的提交记录及工作目录中的未提交更改。
    • 适用于彻底回退分支到某个稳定版本。
  • 影响范围:
    • 当前分支的提交记录和 HEAD 指针都会被移动到 <commit>
    • 工作目录和暂存区会被同步更新为 <commit> 的状态。

示例

git reset --hard <commit>
# 当前分支历史将直接回退到指定版本,之后的提交会丢失。

如果更改已经推送到远程仓库,需要强制推送:

git push origin branch-name --force

两者的区别总结

特性git checkout <commit>git reset --hard <commit>
影响分支历史不影响会修改分支历史
适用场景查看/测试旧版本,或创建新分支确定要彻底回退到某个版本
对未提交更改的影响保留未提交更改丢弃所有未提交更改
是否“危险操作”是(操作需谨慎)

推荐使用场景*

  • 需要保留分支历史或仅查看某个版本: 使用 git checkout
  • 确认要回退分支并丢弃之后的所有更改: 使用 git reset --hard

如果你对后续的更改不确定,建议使用 git checkout 更安全,避免误操作导致数据丢失。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

http://www.lryc.cn/news/499002.html

相关文章:

  • Preprocess
  • stm32 spi接口传输asm330l速率优化(及cpu和dma方式对比)
  • 数字时代的文化宝库:存储技术与精神生活
  • flex: 1 display:flex 导致的宽度失效问题
  • Hive 窗口函数与分析函数深度解析:开启大数据分析的新维度
  • 前端工程 Node 版本如何选择
  • 推荐在线Sql运行
  • 【数据结构】【线性表】特殊的线性表-字符串
  • app-1 App 逆向环境准备(mumu模拟器+magisk+LSPosed+算法助手+抓包(socksDroid+charles)+Frida环境搭建
  • 在米尔FPGA开发板上实现Tiny YOLO V4,助力AIoT应用
  • 【IT】测试用例模版(含示例)
  • react dnd——一个拖拽组件
  • 3GPP R18 LTM(L1/L2 Triggered Mobility)是什么鬼?(三) RACH-less LTM cell switch
  • Flutter解压文件并解析数据
  • 21、结构体成员分布
  • TSWIKI知识库软件
  • 深度学习安装环境笔记
  • 使用android studio写一个Android的远程通信软件(APP),有通讯的发送和接收消息界面
  • 学习Python的笔记14--迭代器和生成器
  • 车机端同步outlook日历
  • 教学案例:k相同的一次函数的图像关系
  • EmoAva:首个大规模、高质量的文本到3D表情映射数据集。
  • Elasticsearch vs 向量数据库:寻找最佳混合检索方案
  • 【Flink-scala】DataStream编程模型之水位线
  • Python导入moviepy找不到editor 视频没有声音设置audio_codec参数
  • rsync 是一个非常强大的 Linux 工具,常用于文件和目录的同步、备份和传输。
  • 触发器案例详解
  • jwt 与 sessionid 的区别及应用场景
  • tomcat和nginx
  • 服务器带宽与数据安全的重要性与作用