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
要退回到错误提交的上一次提交。
# 什么都不写 默认 --mixed
git reset 0997fab2fa0bfa468cc5c55e56d7df0491869c3a
可以看到,执行了命令之后版本退回去了,但是修改的内容还在。
如果不想要修改的内容了
# --hard 丢弃修改的内容
git reset --hard 0997fab2fa0bfa468cc5c55e56d7df0491869c3a
退回到了指定版本,修改的内容也没了。
commit 已经push
回退的方式同上,执行完上面指定命令后 可以看到,线上代码还在错误提交那里,本地代码再18:28提交的那一次那里。右下方出现小蓝点,说明线上代码比本地代码更新。
此时如果你push,会提示:
点击merge就又回去了,完全没退回去。
此时应该执行:
# 有可能会让你输入用户名、密码。
git push --force
这样远程代码也就被回退了。
补救
如果我们通过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
第一次我们把它改成:
提交A
2提交
提交C
提交D
并提交 假设commitId是tijiao1
第二次我们把它改成:
提交A
2提交
提交C
4提交
并提交 假设commitId是tijiao2
之后我们进行revert:
git revert tijiao1
此时结果会变成:
提交A
提交B
提交C
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:文章来源:https://www.toymoban.com/news/detail-605572.html
//撤回指定的任意提交
git revert commitId
//撤回最后一次提交
git revert HEAD
//撤回倒数第二次提交
git revert HEAD^
merge commit 的revert:加上-m表示撤回哪一个分支的。它的数据是1或2.
文章来源地址https://www.toymoban.com/news/detail-605572.html
//保留第一个分支为主线
git revert -m 1 commitId
到了这里,关于git reset 命令详解 git revert命令详解。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!