git reset用法

1 --soft --mixed(default)–hard

1.1 --soft

–soft参数告诉Git重置HEAD到另外一个commit,但也到此为止。如果你指定–soft参数,Git将停止在那里而什么也不会根本变化。这意味着index,working copy都不会做任何变化,所有的在original HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中。
在这里插入图片描述

1.2 --hard

–hard参数将会blow out everything.它将重置HEAD返回到另外一个commit(取决于~12的参数),重置index以便反映HEAD的变化,并且重置working copy也使得其完全匹配起来。这是一个比较危险的动作,具有破坏性,数据因此可能会丢失!如果真是发生了数据丢失又希望找回来,那么只有使用:git reflog命令了。makes everything match the commit you have reset to.你的所有本地修改将丢失。如果我们希望彻底丢掉本地修改但是又不希望更改branch所指向的commit,则执行git reset --hard = git reset --hard HEAD. i.e. don’t change the branch but get rid of all local changes.另外一个场景是简单地移动branch从一个到另一个commit而保持index/work
在这里插入图片描述

1.3 --mixed(default)

–mixed是reset的默认参数,也就是当你不指定任何参数时的参数。它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配,但是也到此为止。working copy不会被更改。所有该branch上从original HEAD(commit)到你重置到的那个commit之间的所有变更将作为local modifications保存在working area中,(被标示为local modification or untracked via git status),但是并未staged的状态,你可以重新检视然后再做修改和commit
在这里插入图片描述

1.4 总结

  • –soft:只是删除某次提交,再次提交直接commit即可
  • –mixed:删除某次提交,并且回到add之前的状态,再次提交先add 在commit
  • –hard:删除末次提交,并清空所有基于某commit id这次commit的修改.可能会造成数据丢失

2 使用git reset回滚文件

2.1 工作区已经修改,但还没git add

git checkout .

2.2 已经使用git add提交到暂存区,还没commit

2.2.1 方法1
git reset		#默认是mixed,用HEAD覆盖暂存区,但工作区还没修改
git checkout . 	#用暂存区的内容覆盖工作区
2.2 方法2
git reset --hard	#直接用HEAD覆盖暂存区和工作区

2.3 已经commit,但没push到远程

git reset commit_id
git checkout .
#或者直接使用git reset --hard commit_id

2.4 已经push

pull到本地修改,再提交

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值