zoukankan      html  css  js  c++  java
  • Git 误删本地代码恢复

    先复习一下本地 git 的三个区域着急的老哥可以直接冲恢复误删文件总结

    本地 git 的面貌

    git-repo

    如图(向廖雪峰老师借的图,0.0)所示,本地有三块区域,工作区、暂存区(stage)和版本区(分支)

    注意版本区和版本库的区别,我习惯于把分支称为版本区,可能老哥们有别的习惯,特此提醒,以免误导

    git add 就是把工作区的文件加到暂存区git commit 就是把暂存区的文件加到版本区

    使用 git status 可以查看暂存区状态

    image-20201221205905489

    第一种情况是对比远程仓库分支,发现有两个 commit 可以 push

    第二种情况是工作区和暂存区更新 NextTest.java,版本区未更新

    第三种情况是工作区更新了 NewTest.java,暂存区版本区未更新

    第四种情况是工作区新增了 LastTest.java,未添加到缓存区和版本区

    值得注意的是,在 idea 中,第二种和第三种情况文件都显示为蓝色,个人认为是因为在工作区修改的文件可以通过 git commit -a 直接绕过暂存区提交到版本区,因此对这两种情况不作区分。但实际上这两种情况是不同的

    image-20201221211639024

    恢复误删文件

    1. 使用 git status 查看暂存区状态

      image-20201221212259532

      可以发现直接删除文件后删除的文件更新到了暂存区

      这时候就有两种方案: 1. 提交修改,版本回退;2. 清空暂存区,撤销修改

      下面说一下方案2

    2. 使用 git restore --staged <file>... 删除暂存区文件

      image-20201221213031956

    3. 使用 git checkout -- <file>... 检出版本区的文件

    总结

    方案一:

    1. git commit 提交新版本

    2. git log --oneline 查看上一个版本的版本号

    3. git reset <commitID> 或者 git reset HEAD~1

    方案二:

    1. git status查看删除的文件
    2. git restore --staged <file>... 从暂存区移除这些文件
    3. git checkout -- <file>... 撤销修改
  • 相关阅读:
    【Head First Servlets and JSP】笔记
    【Java Web】新手教程(转)
    【Java Web】入门资源整理
    【离散数学】网络资源整理
    【c++习题】【17/5/8】重载运算符
    【c++习题】【17/4/13】stack
    【笔记】css3实现网页平滑过渡效果...
    【Python】常用内建模块(卒)
    【Java】仿真qq尝试:用户注册(三)
    【Thinking in java, 4e】复用类
  • 原文地址:https://www.cnblogs.com/weirwei/p/14170270.html
Copyright © 2011-2022 走看看