git命令:reset和revert的区别

区别:

reset:回退到某一个历史版本;(回滚某个commit)

revert:重做某一个历史版本(回滚某个 commit)

假如有三个提交,A-->B-->C(head-->master):

1、reset B变为:A-->B;

2、revert B变为:A-->C。

 

reset命令介绍(原文

当要回退到某一次提交的状态时,可以使用git reset命令。
git reset [--soft | --mixed | --hard] [<commit>]

其中,<commit>是指commit的hashcode。(可以使用git log查看hashcode)

也可以使用HEAD代替<commit>,命令为
git reset [--soft | --mixed | --hard] [HEAD]

补充:

1、上一次commit(倒数第二次):HEAD^  或者 HEAD~1 

2、上上一次commit(倒数第三次):HEAD^^  或者 HEAD~2

3、--soft仅将head指针指向历史版本,不会改变工作区和暂存区的内容 

4、--mixed将head指针指向历史版本,且用历史版本的暂存区覆盖当前暂存区(默认的选项)

5、--hard将head指针指向历史版本,同时覆盖工作区和暂存区的内容(比较危险慎用)

 

回滚具体情况的使用:(原文

1、已修改,未git add

git checkout . (git checkout .和git add .是一对反义词)

2、已git add,未commit(到了暂存区)

git reset 先用Head指针覆盖当前的暂存区内容

git checkout . 再用暂存区内容覆盖工作区内容

或者

git reset --hard 直接使用head覆盖当前暂存区和工作区

3、已经commit,未push

git reset --mixed HEAD^  覆盖本地的暂存区

git checkout .

或者

git reset --hard HEAD^

git reset --soft HEAD^ 相当于回退到倒数第二次commit,并且已git add,未commit) 

4、已经push

对于已经提交到远端的公共分支比如master上的commit只能用revert来进行回退操作

 

revert命令介绍

撤销某次操作(删除指定的commit操作的内容),此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。

撤销最新的提交:git revert HEAD

撤销最新的三次提交:git revert HEAD~3...HEAD

说明:

git revert X...Y:

X...Y 代表一个左开右闭区间(X,Y],不包括X,包括Y. 其中Y为起点commit,X为终点commit的下一个commit。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读