丢弃工作区中的修改
接着上篇文章,首先确定工作区中是干净的,查看工作区的文件以及文件的内容:
下面在test.txt中新增一行:
echo 'line 3' >> test.txt
cat test.txt
当然也可以使用vi打开文件编辑,如果只是简单的往文件末尾追加一行的话,使用这个命令更快捷。
下面查看状态:
git 提示有修改没有被暂存,修改的文件为test.txt,可以使用git add加修改加入暂存区,也可以使用git checkout丢弃工作区中的修改。
使用如下命令:
git checkout -- test.txt
结果如下:
使用这个命令时要当心,由于该修改没有加入版本库,如果误操作,无法找回丢弃的修改!
丢弃暂存区的修改
确定当前工作区是干净的,并查看文件内容
下面修改文件内容:
echo 'line 1' > test.txt // 注意与上一节命令 echo 'line 3' >> test.txt 的区别
将修改加入暂存区:
git提示可以使用git reset HEAD删除暂存区的修改,在上一篇文章中,使用了git rm --cache 命令来删除暂存区的修改,下面试试这个新的命令
git reset HEAD test.txt
可以看到,又变回了没有使用git add命令是的状态,与git rm --cache的作用是一样的。
删除版本库中的文件
查看当前工作区的状态:
下面添加一个文件并提交,这个前面都演示过,直接上图:
新加的文件test2.txt已经加入了版本库,下面将其从版本库中删除:
git rm test2.txt
可以看到,暂存区中有一个修改等待提交,修改的内容为’删除test2.txt’,工作区中没有test2.txt文件。
同样,使用上一节的git reset HEAD命令丢弃暂存区的修改:
现在的提示是有修改没有加入暂存区,修改的内容是’删除test2.txt’,工作区中没有test2.txt文件。
再使用git checkout丢弃工作区中的修改:
可以看到,当前工作区又变干净了,而且刚删除的test2.txt又回来了。
也就是说,使用git rm删除版本库中的文件后,用两步将删除的文件恢复了回来。
然而还没有结束,linux系统也有一个删除文件的命令 rm ,有什么区别呢,下面来试试。
rm test2.txt
现在git的状态其实上面使用
git rm test2.txt
git reset HEAD test.txt
两条命令后的状态一样。
接着提交修改:
这时的状态与使用
git rm test2.txt
命令后一样。
所以:
git rm test2.txt 等同于 rm test2.txt + git add test2.txt
同理,git mv命令也是一样的。