git 文件恢复与项目还原:008
1. 【文件恢复】:将文件恢复到上一次提交的状态
注意:新建且没有提交的文件无法使用文件恢复
命令:
git checkout -- 文件名
假如我们的一开始是这样的,这是没有报错的状态文件
然后我添加了一段内容, 比如我添加这段内容项目报错了, 我需要恢复到没有报错的状态
方法一:代码比较,找到修改的内容将其修改回来,这种方法只适用修改比较少的情况。这种方法不做演示
方法二:文件恢复,将文件恢复到未被修改的状态
首先使用git status查看一下状态, 可以看到这个文件是未被追踪状态
然后可以使用命令:git checkout -- test_file.txt 将文件恢复到未被修改的状态
1.1:撤销追踪:对于那些已经使用了git add 的文件, 这时候是无法对文件进行恢复的,需要将文件撤销追踪才能对文件使用恢复功能
假如我们对文件进行一个修改, 并对他使用 git add 命令
这个时候使用 checkout 命令是无法起作用的,如下,文件还是无法恢复到未被修改状态
这个时候就需要使用命令 git reset HEAD 文件名 对它进行追踪撤销。
然后使用 git status 命令查看当前文件状态,可以看到该文件是未添加到缓存区一个状态, 这个时候就可以对这个文件使用 checkout 命令来恢复了
恢复命令,可以看到文件已经被恢复了
2. 【版本还原】
命令:
git reset -- hard DEAD^ 回退到上一个版本
git reset -- hard DEAD^^ 回退到上上一个版本
git reset -- hard 版本号 指定退回到指定版本(注意不能使用HEAD。且一旦回退到指定版本, 那指定版本之前的版本都会消失,所以不建议使用)
git checkout 版本号 -- 文件名 将指定文件退回指定版本(不会删除历史版本)
git checkout 版本号 -- . 将所有文件回退到指定版本(不会删除历史版,版本回退时建议使用这个命令,要注意的是文件恢复命令,版本号还是原来的版本号,版本描述也是原来的版本描述)
首先查看一下版本号:git log --oneline 如下可以看到,有5个版本号,当前项目一共有5次提交记录。这个是从下往上来排序的
回退到上一个版本:git reset --hard HEAD^ (haed是强行的意思、HEAD是指针的意思,这里回退到上一个版本,所以加^)
回退到上上个版本也是一样,这里就不再演示:git reset --hard HEAD^^
不建议使用(因为指定版本之前的版本会消失):退回到指定版本,假如我想回退到“描述信息”这个版本,这时就可以使用命令:git reset --hard 版本号
建议使用:git checkout 版本号 -- .(回退到指定版本,之前的版本不会消失,注意, 这个实际上是文件恢复,将所有文件恢复到指定版本,版本号不会更新,版本描述也不会更新):
git checkout 版本号 -- 文件名 (将指定文件回退到指定版本,这里就不演示了)
git checkout 版本号 -- . (将所有文件回退到指定版本,这里就不演示了)
完毕!!!