先复习一下本地 git 的三个区域着急的老哥可以直接冲恢复误删文件和总结
本地 git 的面貌
如图(向廖雪峰老师借的图,0.0)所示,本地有三块区域,工作区、暂存区(stage)和版本区(分支)
注意版本区和版本库的区别,我习惯于把分支称为版本区,可能老哥们有别的习惯,特此提醒,以免误导
git add
就是把工作区的文件加到暂存区,git commit
就是把暂存区的文件加到版本区
使用 git status
可以查看暂存区状态
第一种情况是对比远程仓库分支,发现有两个 commit 可以 push
第二种情况是工作区和暂存区更新 NextTest.java,版本区未更新
第三种情况是工作区更新了 NewTest.java,暂存区版本区未更新
第四种情况是工作区新增了 LastTest.java,未添加到缓存区和版本区
值得注意的是,在 idea 中,第二种和第三种情况文件都显示为蓝色,个人认为是因为在工作区修改的文件可以通过 git commit -a
直接绕过暂存区提交到版本区,因此对这两种情况不作区分。但实际上这两种情况是不同的。
恢复误删文件
-
使用
git status
查看暂存区状态可以发现直接删除文件后删除的文件更新到了暂存区
这时候就有两种方案: 1. 提交修改,版本回退;2. 清空暂存区,撤销修改
下面说一下方案2
-
使用
git restore --staged <file>...
删除暂存区文件 -
使用
git checkout -- <file>...
检出版本区的文件
总结
方案一:
-
git commit
提交新版本 -
git log --oneline
查看上一个版本的版本号 -
git reset <commitID>
或者git reset HEAD~1
方案二:
git status
查看删除的文件git restore --staged <file>...
从暂存区移除这些文件git checkout -- <file>...
撤销修改