git reset

git reset

git-reset - Reset current HEAD to the specified state
git-reset - Reset current HEAD to the specified state
移动HEAD指针到指定的版本(state)

用git log可以查看提交历史,以便确定要回退到哪个版本
用git reflog查看命令历史,以便确定要回到未来的哪个版本

git reset [-q] [<tree-ish>] [--] <paths>…​
git reset (--patch | -p) [<tree-ish>] [--] [<paths>…​]
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

对于整体
git reset的三个参数–soft, --mixed, --hard,mixed是默认参数,三个参数的控制范围如下图所示

参数工作区暂存区仓库
softnonoyes
mixednoyesyes
hardyesyesyes

因为commit之后是暂存区的内容放在仓库里,所以暂存区会变成空的,reset mixed和hard时,暂存区都是空的,soft则是没有清空暂存区,使用当前的暂存区
https://blog.csdn.net/qq_22337877/article/details/73249912

git reset # 将仓库区缓存区恢复到最后一次提交的状态,工作区不受影响
git reset HEAD # 同 git reset
git reset --soft HEAD~ # 工作区和暂存区不变,仓库区向前回退一次,回到倒数第二次提交的状态
git reset HEAD~ # 工作区不变,暂存区和仓库索引都会回退一次,回到倒数第二次提交的状态
git reset --hard HEAD~ # 工作区暂存区仓库索引都回退到一次,回到倒数第二次提交的状态

对于文件
对于文件了来说reset的作用和对于整体来说有很大的不一样

git reset -- filename # 将文件从缓存区中撤销,而不影响工作区的
git reset HEAD filename #同上 用HEAD指向想恢复的版本
reset ID file.txt # 同上 用具体的ID指向想恢复的版本

注意

1.git reset 移动了HEAD和分支指针,而git checkout只是移动head指针,所以git checkout用来切换不同分支和检查历史版本,reset多用于重置缓存区

2.提交后,修改工作区,此时使用git checkout或者git reset都不会更改工作区的内容.所以要养成良好的习惯,当使用checkout或者reset时都先进行提交.

https://blog.csdn.net/longintchar/article/details/82314102

参考:
https://www.cnblogs.com/fengff/p/10822006.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值