git reset --hard xxx/soft xxx,以及

2018-10-27  本文已影响0人  云谷小宝

很多时候,git新手很容易误操作,而git reset --hard xxx/soft xxx、git revert 都是用来撤销代码仓库中的某些更改的,它们非常相似,在用的时候很容易混淆,下面比较一下它们的区别及作用。

Git仓库有三个主要的组成,工作目录、暂存区、提交历史。

resert

如果修改了某些内容,但是还没有push到远程仓库,可以用git reset去撤销更改,除了在当前分支上操作,还可以通过传入标记来修改缓存区或者工作目录,这些标记限定了git reset的作用域,常常跟HEAD作为参数一起使用。
例如:

git resert HEAD^2

reset操作如下图所示:


1.png 2.png

revert

如果我们修改了某些内容,已经commit到本地仓库,并且push到远程仓库了,这种情况下想把本地和远程仓库都回退到某个版本,该怎么做呢?

前面讲到的用git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化,这样,及时本地reset了,但如果再git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge,这并不是我们想要的东西。

对于已经把代码push到远程仓库,你退回本地代码其实也想同时退回线上代码,回滚到某个指定的版本,线上线下代码保持一致。git revert用于撤销某次操作,此次操作之前和之后的commit和history都会保留,即用一个新提交来消除一个历史提交所做的任何修改。

git revert HEAD 撤销前一次commit
git revert HEAD^ 撤销前前一次commit
git revert commit xxx 撤销指定的版本,撤销也会作为一次提交进行保存。

revert之后你的本地代码会回滚到指定的历史版本,然后再git push。

上一篇 下一篇

猜你喜欢

热点阅读