Git版本回退

转自:https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192

https://vue3js.cn/interview/git/git%20reset_%20git%20revert.html#一、是什么

1.reset命令

reset用于回退版本,可以遗弃不再使用的提交。

1.1--hard参数

使用命令

git reset --hard HEAD^
//或者
git reset --hard HEAD~1

表示回退到上1个版本,HEAD~n表示回退到上n个版本, 回退的本质是移动HEAD指针,git reset 命令是在更改git指针HEAD的指向,具体是更改指向不同的版本号。然后顺便把工作区的文件更新了。

 类似的:

如果想恢复了,直接再reset之前的commitID前几位即可,

myproj % git reset --hard 7ce989d2294
HEAD 现在位于 7ce989d 修改a.txt,+0820 bg修改一下

--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。

logs/有记录所有的命令情况,可以找回:

myproj % git reflog
7ce989d (HEAD -> master) HEAD@{0}: reset: moving to 7ce989d2294
c3a96ee HEAD@{1}: reset: moving to head~1
7ce989d (HEAD -> master) HEAD@{2}: checkout: moving from feature/1 to master
594e046 (origin/master, feature/1) HEAD@{3}: checkout: moving from master to feature/1
7ce989d (HEAD -> master) HEAD@{4}: commit: 修改a.txt,+0820 bg修改一下 

1.2--soft参数

https://www.runoob.com/git/git-reset.html

--soft 参数用于回退到某个版本: 

$ git reset --soft HEAD~3   # 回退上上上一个版本 

暂存区和工作区内容都不变,只是版本库的版本回滚了, 

该参数能让commit的内容,再回到工作区,不会丢失

1.3--mixed参数(默认)

https://zhuanlan.zhihu.com/p/346993796

--mixed 为默认,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变 

git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
git reset #没有指定ID, 暂存区的内容会被当前ID版本号的内容覆盖,工作区不变
git reset <ID> #指定ID,暂存区的内容会被指定ID版本号的内容覆盖,工作区不变
 

 应该是只影响暂存区的内容,使得暂存区和版本库一致。如下图所示,本底仓就是版本库,

git reset HEAD可以理解为current 版本,舍去暂存区的内容,重新将文件变为unstaged。

1.4总结

  • --mixed(默认):默认的时候,只有暂存区变化

  • --hard参数:如果使用 --hard 参数,那么工作区也会变化

  • --soft:如果使用 --soft 参数,那么暂存区和工作区都不会变化

2.revert命令

在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化,不会改变过去的历史,主要是用于安全地取消过去发布的提交。

 git revert 撤销某次操作,此次操作之前和之后的 commithistory都会保留,并且把这次撤销,作为一次最新的提交,如下:

git revert <commit_id> 
git revert HEAD #撤销前一个版本
git revert HEAD^ #撤销前前一次

3.区别

  • 撤销(revert)被设计为撤销公开的提交(比如已经push)的安全方式。用一次新的commit来回滚之前的commit。
  • git reset被设计为重设本地更改。直接删除指定的commit。
  • git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。reset 是把HEAD向后移动了一下。

 

posted @ 2022-08-20 22:34  lypbendlf  阅读(85)  评论(0编辑  收藏  举报