当前位置:   article > 正文

git reset版本回退后悔药(图文例子)_git reset 撤销

git reset 撤销


欢迎关注 『发现你走远了』 博客,持续更新中
欢迎关注 『发现你走远了』 博客,持续更新中

版本回退

自从通过ide插件去实现之后 git命令统统忘光了~
但是面试要求会考`还是记录一下吧~

前期测试样例准备

我们修改了txt的内容并进行一次提交

git add .
git commit
  • 1
  • 2

在这里插入图片描述

然后再次修改txt
在这里插入图片描述

可以发现此时因为没有add,出现了被追踪但是没有提交的文件红色警告

git status
  • 1

在这里插入图片描述
查看提交历史看到确实增加了提交历史总共有3次,第一次是一开始时候的默认提交,第二次提交的哈希值100c6c8ce803b4067f65f7fb13a2723ee30db16c

git log
  • 1

在这里插入图片描述

git reset --soft 不撤销add,撤销commit,保留修改

保留工作目录和暂存区的修改,将 HEAD 指向指定的提交,相当于取消提交并将更改放回暂存区。(撤销了commit,但是没有撤销add,此时你可以直接commit提交)

根据哈希值还原到第二次的提交文件,这里的commit是哈希值,因为我们这从第3次提交回退到第2次提交,是回退到上一个版本,所以可以HEAD^1代表哈希值

git reset --soft <commit>

git reset --soft 100c6c8ce803b4067f65f7fb13a2723ee30db16c
git reset --soft HEAD^1
  • 1
  • 2
  • 3
  • 4

可以看到此时的txt内容不变仍然是我们提交之前的,但是git log会发现第三次提交没了.
在这里插入图片描述
也就是说,你回到了你第三次提交之前,回退了add和commit的命令

  • 将当前分支的 HEAD 指针移动到指定的提交(commit)100c6c8ce803b4067f65f7fb13a2723ee30db16c,这意味着当前分支会回退到这个提交之前的状态。
  • 保留之后的更改在暂存区中,这意味着之后的更改不会被取消暂存。
  • 保留工作目录中的修改,这意味着工作目录中的文件不会被改变。

git reset --mixed 或 git reset () 撤销add,撤销commit,保存修改

默认行为,保留工作目录的修改,但不会保留暂存区的修改,将 HEAD 指向指定的提交,相当于取消提交并将更改放回工作目录。(撤销了add和commit,下次提交你需要add后才能commit)

git reset --mixed <commit> 
或
git reset <commit>

git reset --mixed HEAD^1
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

git reset --hard 撤销add,撤销commit,不保存修改

重设 HEAD 到指定提交,并丢弃工作目录和暂存区中的所有修改,慎用,会永久丢失未提交的修改。
(回退add回退commit并且回到上次刚刚提交后的状态,放弃了所有修改,慎用)

git reset --hard <commit>
  • 1

git reset --merge 取消合并

git reset --merge <commit>
  • 1

用于取消一个合并,并将 HEAD 指向合并前的状态。

git reset --merge 的作用包括:

  • 将当前分支指向合并之前的状态,撤销合并操作。
  • 保留工作目录和暂存区的文件状态,让你可以重新处理合并,解决冲突或者进行其他操作。

git reset --keep 不撤销add,撤销commit,根据情况判断区别与mixed

类似于 --hard,但会保留未提交的本地修改。

当使用 git reset --keep 命令时,版本库会回退到指定的提交,同时清空暂存区,并且会根据情况保留或重置工作目录中的文件状态。

第一种情况

如果工作区中的文件在当前版本和回退版本之间没有发生过变动,那么工作区的修改将被保留,不会受影响。

git reset --keep  <commit>
git reset --keep  HEAD^1
  • 1
  • 2

可以发现此时的版本回退了,但是文件内容改为了原来的,git log后发现第三次提交没有了,并且可以直接commit无需add
在这里插入图片描述

第二种情况发生了合并冲突

如果工作区中的文件在当前版本和回退版本之间有发生过变动,并且工作区也进行了修改,那么需要手动合并这些变动或解决可能出现的冲突。
在我们执行keep之前先修改了txt的内容,就会有如下报错,提示合并冲突
在这里插入图片描述

在这里插入图片描述


总结

大家喜欢的话,给个

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/632249
推荐阅读
相关标签