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 更安全,避免误操作导致数据丢失。
热门推荐
职业本科不需要写毕业论文?最新版职教专业教学新标准新在哪儿?
精选玉石手串:数量选择有讲究
GMP认证知识详解:从基本要求到质量管理
机构信用代码证查询网址:依法合规获取企业征信信息的官方渠道
概率论与统计学在投资领域的应用
Excel中输入和处理GPS坐标的完整指南
视物模糊和视力下降,糖友应警惕糖网
阿立哌唑片:为精神分裂症患者带来新的治疗选择
如何抓团队风气
工厂辞职不批准怎么办?法律为你撑腰
皮肤上突然冒出的小黑点,到底是啥啊?
怎样才能去掉脸上的黑斑晒斑
酸模叶:被忽视的美食珍宝
为宝宝健康护航:新生儿疾病筛查,不可忽视的第一道健康“安检”
我国医用高分子材料行业:机遇与挑战并存 高端市场国产替代空间广阔
椰子水好處壞處:9大隱藏風險恐致命
电脑上怎么新建一个Excel
仓库发货管控流程包括哪些步骤?
古法研磨工序:传统工艺的传承与创新
《造梦西游3》神器银弹金弓:华丽外观与超强属性,战斗中的远程杀手
户外越野跑需要准备什么?这份越野跑装备清单请收好
行为异常属于精神病吗?如何识别与应对
世界首创!煤加氢气化技术,开辟煤炭清洁高效利用新途径!
AMD高管:9800X3D热销因英特尔表现不佳,市场需求远超预期
动静之间的生命韵律:打太极须掌握四种呼吸法
电脑网卡无法连接网络?三招教你解决问题
提前还款,哪种方式能省更多利息?
一文带你了解 VLAN 三种端口类型:Access、Trunk、Hybrid
皮下注射是什么意思
浙江省哪个市最富?浙江省各市经济实力排名