git reset 命令详解 git revert命令详解。

https://blog.csdn.net/wangdawei_/article/details/124543824

git reset 命令详解
reset命令
介绍
参数
使用
commit还没有push
commit 已经push
补救
git revert命令
revert说明
举例
命令


reset命令
介绍
git reset 命令格式为:
git reset [ --soft | --mixed | --hard ] [< commitid >]
在git的这些命令中git reset是最长常用的,也是最危险的最容易被误用的。它的主要参数是:soft,mixed,hard它们告诉git,当执行reset是,要对index和working copy做什么。

参数
soft:
–soft参数只将其它的commit重置到你选定的HEAD,index和working copy中的数据不变。
mixed:
–mixed参数是将HEAD和index重置到你选定的HEAD,而working copy不变。
hard:
–hard是将HEAD,index,working copy同时改变到你规定的commit上。
注意:commitid是每次你要回退到的那个commit的id,它可以通过git log获取。

使用
commit还没有push


可以看到我新进行了一次提交,但是还没有push。此时我发现,我提交错了,要撤回这次提交。
执行:

git log
1

要退回到错误提交的上一次提交。

# 什么都不写 默认 --mixed
git reset 0997fab2fa0bfa468cc5c55e56d7df0491869c3a
1
2

可以看到,执行了命令之后版本退回去了,但是修改的内容还在。
如果不想要修改的内容了

# --hard 丢弃修改的内容
git reset --hard 0997fab2fa0bfa468cc5c55e56d7df0491869c3a
1
2

退回到了指定版本,修改的内容也没了。

commit 已经push
回退的方式同上,执行完上面指定命令后 可以看到,线上代码还在错误提交那里,本地代码再18:28提交的那一次那里。右下方出现小蓝点,说明线上代码比本地代码更新。


此时如果你push,会提示:

点击merge就又回去了,完全没退回去。
此时应该执行:

# 有可能会让你输入用户名、密码。
git push --force
1
2

 

这样远程代码也就被回退了。

补救
如果我们通过git reset --hard将版本回退到之前的版本了,那我们还是可以补救的,先通过git reflog命令,找到要回退的commitId,然后通过命令:git reset --hard commitId来恢复。

git revert命令
revert说明
  由于某些文章说的说法可能不是很明确,所以导致一部分小袁同志们对revert有一定的误解,一开始我也很难理解revert到底是干什么的。毕竟用于版本回退的都已经有git reset了,为什么还要再出一个git revert?
  其实呢,revert它不会想reset一样”带你回到“那个你指定的提交,并假装那个提交之后的后续提交都没有发生。它是用于单个提交的逻辑否定 -并且单独提交- 保留后续提交。

举例
比如:
我们有一个文件里面写了:

提交A
提交B
提交C
提交D
1
2
3
4
第一次我们把它改成:

提交A
2提交
提交C
提交D
1
2
3
4
并提交 假设commitId是tijiao1

第二次我们把它改成:

提交A
2提交
提交C
4提交
1
2
3
4
并提交 假设commitId是tijiao2

之后我们进行revert:
git revert tijiao1
此时结果会变成:

提交A
提交B
提交C
4提交
1
2
3
4
所以我们要知道revert是只撤回指定的提交,并保留后续的提交。
如果你想让版本直接回退到tijiao1并且取消后续所有提交那你应该使用reset。

命令
revert分两种,因为commit分两种。
一种是常规的 commit,也就是使用 git commit 提交的 commit;
另一种是 merge commit,在使用 git merge 合并两个分支之后,你将会得到一个新的 merge commit,merge commit 和普通 commit 的不同之处在于 merge commit 包含两个 parent commit,代表该 merge commit 是从哪两个 commit 合并过来的。
常规的revert:

//撤回指定的任意提交
git revert commitId
//撤回最后一次提交
git revert HEAD
//撤回倒数第二次提交
git revert HEAD^
1
2
3
4
5
6
merge commit 的revert:加上-m表示撤回哪一个分支的。它的数据是1或2.


//保留第一个分支为主线
git revert -m 1 commitId
1
2
文章
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/wangdawei_/article/details/124543824

posted @ 2024-02-21 19:28  simadi  阅读(38)  评论(0编辑  收藏  举报