Git回退版本:checkout与reset命令的区别
创作时间:
作者:
@小白创作中心
Git回退版本:checkout与reset命令的区别
引用
51CTO
1.
https://blog.51cto.com/u_15777557/12744967
在使用 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 更安全,避免误操作导致数据丢失。
热门推荐
古代冷兵器 ——戟
部落冲突10本最强布阵(可复制) 部落冲突10本(公认无解)最强布阵大全
如何训练手腕前端的肌肉
蒸饺上汽蒸几分钟就熟了
文玩新手指南:绿松石真伪鉴别技巧
小学生起诉老师体罚致其焦虑抑郁,法院判了!
C语言realloc()函数详解:动态内存调整完全指南
13家不达标!保险公司最新偿付能力报告出炉
头发脱了还能再生吗
我国各省状元排名(附解元、状元、榜眼、探花、举人、进士关系)
公证属于什么单位?全面解析公证机构的性质与职能
独家盘点:十大鸭屎香茶叶品牌,你Pick谁?
2025上海居住证积分最新要求:大专学历如何积满120分?
腹式呼吸不是单纯的鼓起肚子和收起肚子
AutoGPT 从安装到使用
科普丨无损、HQ、母带,到底应该听哪个音质?
出生时间不清楚是否影响八字预测
《碧蓝航线》夕张(狐)改造后技能属性一览
NTFS 安全权限详解
什么是光色温?一文读懂灯光色温的奥秘
打起敌后穿插的非洲将军,在中国军校学到了哪些本领?
危化品主要负责人安全职责:法律框架下的核心使命与义务
房屋租赁合同避坑指南:从签约到解约全攻略
探索宇宙的黑洞:Blackstar —— Haskell编写的光线追踪器
物业的多元经营到底是什么?又该如何发展?
CAD软件绘图基础入门:制图初学者如何绘制图纸
如何应对公司裁员的心理压力
智驾行业再添新军 “大疆系”卓驭科技欲凭低算力方案破局
明日方舟【干员测评-凯尔希】暴力输出,极致回转
临床常用的疼痛评估量表汇总,附操作步骤与评定标准