[Git]-002 Git版本回退

2019-08-21  本文已影响0人  一点想法

1.问题:一个文件被多次修改后提交,那么如何回退到任意版本呢?

2.实际操作步骤:提交demo.txt文件,又做了2次修改

qingjiao$ git log --pretty=oneline #此处可以看到demo2.txt有3次记录
cc73c18b5a9625fb1b012b5fd58d7a64761b871f (HEAD -> master) delete some unuseful 
inforamtion
adbb5a4b7f20215aded6f93c9bb4fc21d92a70cd 将demo2添加几行
04242bfa2498f9f252308cbad53d6fb90cda564d add demo2.txt

Git中使用HEAD来指向当前最新的版本,想恢复上一个版本用HEAD表示,上上个版本用HEAD^,如果往上版本数较多,可以使用数字表示HEAD~100,这种不推荐使用,推荐使用commit_id来指定

qingjiao$ git reset --hard HEAD^^  #回退到上上的版本
HEAD is now at 04242bf add demo2.txt

qingjiao$ git log --pretty=oneline
04242bfa2498f9f252308cbad53d6fb90cda564d (HEAD -> master) add demo2.txt
c0b0e761a70920a2783ea7ad23c584e7220e3871 保持readme.txt文件内容不被恢复初始版本
38736a9ab5e5597df9c061599127daa4707ef99e add readme.txt and demo.txt

qingjiao$ cat demo2.txt  #恢复到了demo2.txt刚添加时内容
i like test
yeah u just do it
thanks

上一步我们将demo2.txt回退到了上上个版本,如果此时我们想要恢复到最新的版本,如果这时我们使用HEAD就无法完成此操作,因为HEAD已经指向了当前的版本

  1. step1:使用git reflog查看所有执行过命令历史记录,可查看每次执行动作的commit_id
qingjiao$ git reflog
04242bf (HEAD -> master) HEAD@{0}: reset: moving to HEAD^^
cc73c18 HEAD@{1}: commit: delete some unuseful inforamtion #这是回退之前最新的版本,复制id
adbb5a4 HEAD@{2}: commit: 将demo2添加几行
04242bf (HEAD -> master) HEAD@{3}: commit: add demo2.txt
qingjiao$ git reset --hard cc73c18  #恢复到最新的版本
HEAD is now at cc73c18 delete some unuseful inforamtion

qingjiaodeMacBook-Pro:learn qingjiao$ git log --pretty=oneline
cc73c18b5a9625fb1b012b5fd58d7a64761b871f (HEAD -> master) delete some 
unuseful inforamtion
adbb5a4b7f20215aded6f93c9bb4fc21d92a70cd 将demo2添加几行
04242bfa2498f9f252308cbad53d6fb90cda564d add demo2.txt
c0b0e761a70920a2783ea7ad23c584e7220e3871 保持readme.txt文件内容不被恢复初始版本
38736a9ab5e5597df9c061599127daa4707ef99e add readme.txt and demo.txt

qingjiaodeMacBook-Pro:learn qingjiao$ cat demo2.txt
i like test
yeah u just do it
thanks

i'm sad

上一篇 下一篇

猜你喜欢

热点阅读