git 学习笔记之revert,reset区别


强力推荐:

git比较容易理解的入门讲解:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

从原理角度剖析git命令https://coding.net/help/doc/practice/git-principle.html

git fetch, merge, pull, push需要注意的地方http://www.cnblogs.com/hutaoer/archive/2013/03/14/3078869.html


 Revert

如果我们想要用一个反向提交恢复项目的某个版本,那就需要 revert 来协助我们完成了。什么是反向提交呢,就是旧版本添加了的内容,要在新版本中删除,旧版本中删除了的内容,要在新版本中添加。这在分支已经推送到远程仓库的情境下非常有用。

Revert 之前:

图片

revert 也不会修改历史提交记录,实际的操作相当于是检出目标提交的项目快照到工作区与暂存区,然后用一个新的提交完成版本的“回退”。

Revert 之后:

图片

Reset

reset 操作与 revert 很像,用来在当前分支进行版本的“回退”,不同的是,reset 是会修改历史提交记录的。

reset 常用的选项有三个,分别是 —soft, —mixed, —hard。他们的作用域依次增大。

我们分别来看。

soft 会仅仅修改分支指向。而不修改工作区与暂存区的内容,我们可以接着做一次提交,形成一个新的 commit。这在我们撤销临时提交的场景下显得比较有用。

使用 reset –soft 前:

图片

使用 reset –soft 后:

图片

mixed 比 soft 的作用域多了一个 暂存区。实际上 mixed 选项与 soft 只差了一个 add 操作。

使用 reset –mixed 前:

图片

使用 reset –mixed 后:

图片

hard 会作用域又比 mixed 多了一个 工作区。

使用 reset –hard 前:

图片

使用 reset –hard 后:

图片

hard 选项会导致工作区内容“丢失”。

在使用 hard 选项时,一定要确保知道自己在做什么,不要在迷糊的时候使用这条选项。如果真的误操作了,也不要慌,因为只要 git 一般不会主动删除本地仓库中的内容,根据你丢失的情况,可以进行找回,比如在丢失后可以使用 git reset –hard ORIG_HEAD 立即恢复,或者使用 reflog 命令查看之前分支的引用。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值