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 更安全,避免误操作导致数据丢失。
热门推荐
学校、专业、城市,到底应该怎么选?
亚特兰大联储又双叒叕下调美国一季度GDP预期!预计将收缩超过2.8%
探索现代简约风格的装修案例与设计灵感
电视剧《日光之城》带动拉萨“文旅热”
飞机上携带行李有什么要求
如何收藏和投资硬币?这些收藏品的市场趋势如何分析?
浅谈 2D 横版动作游戏的 Boss 设计:如何在维度限制下增加体验的丰富性
环境产品声明与可持续材料选择:如何提高产品的环保性能?
重卡电动化案例:榆林市49吨纯电半挂牵引车案例
探秘长沙太平街!老街美食大赏,这些小吃店不可错过
痛风急性期,需要使用秋水仙碱吗?
如何选择合适的代理商:国外公司在中国市场的成功之道
如何委婉地拒绝一份工作Offer(高效应对职位邀约,保持良好人际关系)
八字两土两木三火一金的运势解读 八字运势五行分析
宠物疫苗接种有哪些关键点
青椒怎么保存时间长还新鲜
青椒怎么保存时间长还新鲜
买架子鼓需要注意什么
什么是合资车
合资车和国产车如何选择?各自的优劣势是什么?
家有宝宝怎么办?安全除醛秘籍分享
缺血灶的症状和治疗方法
脑缺血灶是什么?症状、危害及注意事项全解析
2025年CFA考试备考攻略:从内容到难点全方位解析
丁世忠谈国货品牌转型:承担起消费升级需求重任
厌氧氨氧化(ANAMMOX)是新一代生物脱氮技术 我国应用处于快速发展中
贷款合同中对提前还款的限制规定详解
经典辩论辩题分析:从选择到实践的全方位指南
什么是RLHF(基于人类反馈的强化学习)?
水培富贵竹是换水还是加水最好?