首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
数据库
›
Oracle
›
【微知】git reset --soft --hard以及不加的区别? ...
返回列表
发新帖
【微知】git reset --soft --hard以及不加的区别?
[复制链接]
发表于 2025-9-20 21:38:00
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
配景
在 Git 里,git reset 是用来将当前的 HEAD 复位到指定状态的下令。--soft、--hard 是它的两个常用选项,本文简单先容他们的区别,以及不添加选项时的默认情况。
在 Git 里,HEAD 是一个紧张的引用,它指向当前地点的分支大概提交。# 检察当前HEAD指向的分支 git symbolic-ref HEAD。 雷同C语言的指针,只是HEAD指向的是某个提交,大概git内里的obj。大概blob。
快速追念(逐级增长)
–hard会将暂存区和工作区都清空,强制将工作空间
配置
到某个提交。具体根据HEAD~x来决定
–mixed(默认,不加soft和hard)暂存区回退到工作区,工作区原来的未便。提交区到暂存区的根据HEAD~x来决定
–soft 只有HEAD~x才回退,其他都稳定
其他:
–soft:仅移动 HEAD,暂存区和工作区稳定。(都不影响)
默认(–mixed):移动 HEAD,重置暂存区,工作区稳定。(影响暂存区)
–hard:移动 HEAD,同时重置暂存区和工作区。(都影响)
可以用HEAD不-1来明确。
其他快速用法:
完全进入commit -1的
代码
版本
:git reset --hard HEAD~1,会减少comimt区,清空暂存区,清空工作区。将本地完全回退到HEAD~1的状态
取消最新的commit到暂存区:git reset --soft HEAD~1
其他影象点:
HEAD 影响提交区的指针是否变革
–soft不改变暂存区和工作区原来的,如果指定HEAD会把HEAD回退到暂存区,然后–soft不影响
–mixed(默认)会回退暂存区到工作区,原来工作区稳定
–hard 如果指定HEAD,会“先”回退commit到暂存区,然后回退暂存区到工作区,然后清空工作区。(可以简单明确为直接规复到指定的commit上,其他全部清场)。
细节
git reset --soft
利用 git reset --soft 时,HEAD 会被移动到指定的提交,不外工作区和暂存区的内容不会改变。可以重新提交之前的修改。
举例:
git reset --soft HEAD~1 #HEAD 回退一个提交,但是暂存区和工作区的内容不变,可重新提交之前的修改。
复制
代码
其他:git reset --soft HEAD 没有任何修改,HEAD指针没有-1以是HEAD稳定,soft不影响暂存区,也不影响工作区
不添加选项的默认情况
如果在利用 git reset 时不添加选项,默认是 --mixed 模式。--mixed 会让 HEAD 移动到指定的提交,暂存区的内容会被重置为指定提交时的状态,工作区的内容稳定。可以重新选择要提交的修改。
举例:
git reset HEAD~1 #HEAD 回退一个提交,暂存区的内容会被重置为前一个提交时的状态,但是工作区的内容不变,可以重新选择要提交的修改。
复制
代码
其他:git reset HEAD 这里HEAD指针没有-1以是HEAD稳定,不影响暂存区,也不影响工作区。相当于git clean -xdf
git reset --hard
git reset --hard 会让 HEAD 移动到指定的提交,同时工作区和暂存区的内容也会被重置为指定提交时的状态。尚未提交的修改都会丢失。
举例:
git reset --hard HEAD~1 #让 HEAD 回退一个提交,并且工作区和暂存区的内容会被重置为前一个提交时的状态,所有未提交的修改都会丢失。
复制代码
其他:git reset --hard HEAD 这里HEAD指针没有-1以是HEAD稳定,hard影响暂存区,也影响工作区。
实验
mixed
hard
总结
--soft:仅移动 HEAD,暂存区(git add的东西还在)和工作区稳定。
默认(--mixed):移动 HEAD,重置暂存区(git add的东西不在),工作区稳定。以是常用这个git reset HEAD~1 来将暂存区的回退
--hard:移动 HEAD,同时重置暂存区和工作区。
在利用 git reset 尤其是 --hard 时要格外审慎,由于它大概会导致未提交的修改丢失。
为了便于明确,reset的本质是修改3个条理,用HEAD稳定来看:
条理1:什么都不影响,git reset --soft HEAD 这里HEAD的值稳定;
条理2:清空暂存区,回退到工作区, git reset HEAD 会把暂存区的放到工作区,HEAD的值稳定;
条理3:影响暂存区,工作区; git reset --hard HEAD 这里会把暂存区的清空,工作区回退(但是注意工作区回退只影响git管理的文件不会影响原来git没有的文件),HEAD的值稳定;
回复
使用道具
举报
返回列表
浏览过的版块
Java
物联网
公有云
数据仓库与分析
Mysql
分布式数据库
王海鱼
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表