当前位置:   article > 正文

git恢复指定commit,使用git reset指令_git 恢复到某个commit

git 恢复到某个commit

git恢复指定commit,使用git reset指令
git一共有三个区域,HEAD(记录点指针),INDEX(修改暂存区),Working目录(电脑文件)

前提操作
假设我们创建一个新的文件夹使用命令git init,在其中创建了一个文件a.txt,先写入

  Hello


告诉自己这是版本1,执行git add .,INDEX <- Working目录中的内容(表示INDEX中的内容变为了Working目录中的内容)
再执行git commit -m "commit 1",INDEX中的内容会成为第一个commit结点,HEAD指针放在了该结点处。
我们再对文件a.txt进行修改,变成版本2

  1.   Hello
  2.   Hello1


执行git add .,INDEX <- Working目录中的内容(表示INDEX中的内容变为了Working目录中的内容)
再执行git commit -m "commit 2",INDEX中的内容会成为第二个commit结点,HEAD指针移动到了该结点。
那么,现在再次对文件a.txt进行修改,变成版本3

  1.   Hello
  2.   Hello1
  3.   Hello2


这时候,Working目录中的内容 != INDEX = HEAD
接下来问题来了,我们对于当前的改动不满意,想退回到以前的commit点。该如何实现?使用git reset函数即可。但我们可能有三种需求。

需求1:感觉版本3有问题,想先看看现在的版本3与之前的版本1有什么不同(版本1是否是无问题的版本),再决定将Working中的内容还原成版本1
我们要做的是:将HEAD指向第一个commit结点,让INDEX = HEAD,但是Working中的内容不变。
使用git reset --mixed HEAD~1,在下图中可以就进行对比。【–mixed为默认】

 

需求2:心里有数,直接想将Working中的内容退回到版本1,也不用看

  • 我们要做的是:将HEAD指向第一个commit结点,让INDEX = HEAD = Working。
  • 使用git reset --hard HEAD~1

 

 


需求3:将Working中的修改使用git add .添加入INDEX,在INDEX与Working和HEAD都不同的情况下,我们希望将HEAD移动到第一个commit,也不想破坏INDEX中的内容。
我们要做的只有:将HEAD指向第一个commit结点
使用git reset --soft HEAD~1

在VSCode中,Changes目录下为Working和INDEX的不同,Staged Changes目录下为INDEX和HEAD的不同。 

 

参考:https://davidzych.com/difference-between-git-reset-soft-mixed-and-hard/ 


————————————————
版权声明:本文为CSDN博主「coasxu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44633882/article/details/117995857

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

闽ICP备14008679号