SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

先添加一个新文件test.txt到Git并且提交:

Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第1张

 

 

 一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了

$ rm test.txt

 

 这个时候,Git知道你删除了文件,

因此,工作区和版本库就不一致了,

git status命令会立刻告诉你哪些文件被删除了:

 Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第2张

 

 

 现在你有的选择:

  情况一   是确实要从版本库中删除该文件,那就用命令  git rm 删掉,

      并且  git commit

     Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第3张

     Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第4张

  现在,文件就从版本库中被删除了。

 

 

  情况二   另一种情况是删错了,并且还没有add到暂存区

     因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

 

     只是在工作区删除了

    可以使用git checkout 命令从 版本库 恢复  

    $ git checkout -- test.txt

 

   ( 恢复全部用 git checkout . )

 

 

  情况三 删错了, 而且已经add到暂存区了, 但是还没有提交    想恢复

    参考Git 时光穿梭鸡 撤销修改  中的工作区内容修改了, 并且已经add到暂存区了, 想回退到上一个版本

    

      用命令git reset HEAD <file>

      >>>>>>>>可以   把暂存区的修改撤销掉(unstage),并且 重新放回工作区:

 

       git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

          当我们用HEAD时,表示最新的版本。

 

        git reset HEAD test.txt   回退单个文件

        git reset HEAD  全部回退

            Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第5张

 

          再用git status查看一下,现在暂存区是干净的,工作区有修改:

          Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第6张

 

         再使用    git checkout .    或   git checkout --test.txt   丢弃工作区的修改

          Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第7张

    现在工作区同版本库一致了

 

 

>>>>>>>>>>>补充 批量删除文件

 

 

参考git批量删除文件和批量提交

 

      >>>>如果你用的rm删除文件,那就相当于只删除了工作区的文件   想恢复,参考上面情况二

  >>>>如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区

      想恢复,参考上面情况三

 

新建目录 removeTest  并在其中新建两个文件

Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第8张Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第9张

 

add  到暂存区

 Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第10张

 

commit到版本库

Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第11张

 

批量删除方法一:(如果是删除当前文件夹下所有文件,方法一将删除该空文件夹一并删除,不会保留文件夹

      操作:(cd 到你要删除的目录下或者 * 可用“”文件夹名“”代替)  -r 代表 recursively(递归)

 

        $ git rm * -r

        $ git commit -m "clear"

        
    $ git rm removeTest -r

       Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第12张

      

       查看一下状态

       Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第13张

 

     此时  removeTest下的文件  连同 该目录  都被删除了    此次删除发生在工作区 和 暂存区  

              ( 如果想撤销此次删除 , 参考上面情况三)

      Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第14张

 

     commit提交此次删除 , 此时版本库中也删除了

      (如果想撤销 , 见底部链接)

        Git 时光穿梭鸡 删除文件 以及批量删除文件,Git 时光穿梭鸡 撤销修改,Git入门 时光穿梭鸡 版本回退 工作区 暂存区 随笔 第15张

 

 

方法二:手动在文件管理器中删除批量文件,然后执行命令:(如果是删除当前文件夹下所有文件,方法二仍会保留该空文件夹

        $ git add .

        $ git commit -m "clear"

 

 

 

现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?

Git入门 时光穿梭鸡 版本回退 工作区 暂存区    参考其中的版本回退内容

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄