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 更安全,避免误操作导致数据丢失。
热门推荐
高级的内观修炼方法—— 千年道家秘传的观心之法
复读压力到底有多大?带你揭秘复读生的真实生活
如何识别具有潜力的投资机会
十维空间:人类命运的终极归宿是死亡还是永恒?
金庸武侠小说兵器排行榜 十大兵器排行榜
白内障手术后视力能恢复到多少?这些因素需了解
研究速递|中国经济关系与非洲低碳工业化
多地春菜在沪争“鲜”上市 民众食春味知自然
帮助青少年克服学习困难 心理治疗的有效方法
咖啡调制秘诀:探索粉水比对风味的微妙影响
《围炉夜话》5句智慧箴言,讲透人生哲理
椎间盘突出症状?能自然好吗?一定要手术治疗吗?
楚霸王项羽自刎江边,刘邦为何三次哭祭项羽?
中国围棋名人战:丁浩、屠晓宇将争夺挑战权
清代母后皇太后和圣母皇太后相比,谁的级别更高呢?谁说了算?
全球财富管理新趋势:迪拜DIFC基金会助力家族资产传承
DSE—大陆学生海外升学的新捷径?
面试时如何展示自己的潜力
浠水县洗马镇:创新乡镇机构改革 探索基层治理新模式
寿命长短,“手指”先知?医生:手上出现4个异常,就要警惕了
情绪影响健康?医生详解情绪如何影响身体,及应对方法
2024上海夜生活节启动,首批100个夏夜特色活动为“上海之夏”预热造势
戴玉对缺金人士的影响与宜忌:全面解析珠宝佩戴与五行平衡
如何DIY智能家居控制中心
产品质检员:完整的职业指南
北交所行情背后:政策利好与科技板块的双轮驱动
2024年国产单机游戏年度黑马《山河旅探》,极力推荐!
《西游记》孙悟空修仙的目的是什么,其得道历程到底有多艰辛?
首次超过!新能源车取代燃油车成定局?
23 种富含维生素和花青素的紫色蔬菜