1.问题:一个文件被多次修改后提交,那么如何回退到任意版本呢?
2.实际操作步骤:提交demo.txt文件,又做了2次修改
-
2.1.使用git log --pretty=oneline查看文件改动的历史记录
qingjiao$ git log --pretty=oneline #此处可以看到demo2.txt有3次记录
cc73c18b5a9625fb1b012b5fd58d7a64761b871f (HEAD -> master) delete some unuseful
inforamtion
adbb5a4b7f20215aded6f93c9bb4fc21d92a70cd 将demo2添加几行
04242bfa2498f9f252308cbad53d6fb90cda564d add demo2.txt
-
2.2. git reset --hard 恢复历史版本有两种途径
-
2.2.1 使用HEAD来指定想要恢复对应的版本
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
-
2.2.2 使用commit_id来回退指定的版本
上一步我们将demo2.txt回退到了上上个版本,如果此时我们想要恢复到最新的版本,如果这时我们使用HEAD就无法完成此操作,因为HEAD已经指向了当前的版本
- 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
网友评论