先添加一个新文件test.txt
到Git并且提交:
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm
命令删了
$ rm test.txt
这个时候,Git知道你删除了文件,
因此,工作区和版本库就不一致了,
git status
命令会立刻告诉你哪些文件被删除了:
现在你有的选择:
情况一 是确实要从版本库中删除该文件,那就用命令 git rm
删掉,
并且 git commit
:
现在,文件就从版本库中被删除了。
情况二 另一种情况是删错了,并且还没有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 status
查看一下,现在暂存区是干净的,工作区有修改:
再使用 git checkout . 或 git checkout --test.txt
丢弃工作区的修改
现在工作区同版本库一致了
>>>>>>>>>>>补充 批量删除文件
>>>>如果你用的rm删除文件,那就相当于只删除了工作区的文件 想恢复,参考上面情况二
>>>>如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区
想恢复,参考上面情况三
新建目录 removeTest 并在其中新建两个文件
add 到暂存区
commit到版本库
批量删除方法一:(如果是删除当前文件夹下所有文件,方法一将删除该空文件夹一并删除,不会保留文件夹)
操作:(cd 到你要删除的目录下或者 * 可用“”文件夹名“”代替) -r 代表 recursively(递归)
$ git rm * -r $ git commit -m "clear"
$ git rm removeTest -r
查看一下状态
此时 removeTest下的文件 连同 该目录 都被删除了 此次删除发生在工作区 和 暂存区
( 如果想撤销此次删除 , 参考上面情况三)
commit提交此次删除 , 此时版本库中也删除了
(如果想撤销 , 见底部链接)
方法二:手动在文件管理器中删除批量文件,然后执行命令:(如果是删除当前文件夹下所有文件,方法二仍会保留该空文件夹)
$ git add . $ git commit -m "clear"
现在,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?
Git入门 时光穿梭鸡 版本回退 工作区 暂存区 参考其中的版本回退内容