首先明白一下基本概念和用法,这段话是从前在看廖雪峰的git教程的时候摘到OneNote的

准备工作:

  • 新建了一个learngit文件夹,在bash中cd进入文件夹,用以下命令创建一个仓库。
$ git init
  • 添加一个文本文件one.txt,里面写个内容 "one"。准备工作完成。文件夹情况如下:

   

实验开始:

实验一:没有add,没有commit

  • 此时不对文件做任何提交,用git status 查看一下文件状态:

    

    说明是完全没有 git add 的

  • 进入文件夹,把文本文件 one.txt 中的内容加一行 “Two”。
  • 回到bash窗口,尝试用 git checkout -- file 命令恢复状态,结果报错:

    

    说明没有add,还想checkout,没有什么意义可言,因为既不在暂存区,也没有提交,所以就没有所谓的恢复

实验二:有add,但不commit

  • 用 git add 把 文本文件添加到暂存区:

    

  • 进入文件夹,把文本文件 one.txt 中的内容加一行 “Two”。
  • 回到bash窗口,尝试用 git checkout -- file 命令恢复状态,啥也没报。Unix哲学是没有情况就是好情况。
  • 打开 one.txt ,发现添加的那一行没了,内容中又只剩下 "One"

实验三:add又commit

  • 确认一下:现在文本文件中内容是一行 "One",因为之前已经 add 过了,所以先用如下命令让状态恢复到连 add 也没有过的时候
git rm --cached one.txt

    效果会是这样的:

    

    好,又恢复到了没有add的情况。

  • 然后我们从头开始 - -。。。其实我也不知道为啥要这样,感觉和前面步骤相同比较好一点。。
  • 用 git add 添加,然后用 git commit 提交,结果如下:成功提交

    

   这时候,文本文件中只有一行"One",

  • 进入文件夹,把文本文件 one.txt 中的内容加一行 “Two”。出现如下界面(说明修改过了)

    

  • 回到bash窗口,尝试用 git checkout -- file 命令恢复状态,啥也没报。Unix哲学是没有情况就是好情况。
  • 打开 one.txt ,发现添加的那一行没了,内容中又只剩下 "One"

结论:必须要先add才存在恢复一说。 checkout 可以理解为“切回某个文件”的意思。但是要注意,这个命令是对工作区生效的。

最新文章

  1. css3+jquery制作3d旋转相册
  2. MongoDB学习笔记
  3. 第7章 权限管理(3)_文件系统属性和sudo权限
  4. Heartbeat+DRBD+MySQL高可用方案
  5. 【POJ3621】Sightseeing Cows
  6. HTML5时代的Web缓存机制
  7. 委托的lambda表达式
  8. 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表
  9. 仿javascript中confirm()方法的小插件
  10. C#单元测试工具包:MvcContrib
  11. 【Android Developers Training】 25. 保存文件
  12. C# 学习之路--百度网盘爬虫设计与实现(一)
  13. 课上补做:用C语言编程实现ls命令
  14. 48-设置tomcat虚拟路径的两种方法(Eclipse、tomcat、IDEA)
  15. 四、Sql Server 基础培训《进度4-插入数据(实际操作)》
  16. 转载:【Scala】使用Option、Some、None,避免使用null
  17. JS禁用键盘浏览器退格键
  18. VsCode下代码导航
  19. MongoDB高可用集群搭建(主从、分片、路由、安全验证)
  20. 转 WiFi的STA和AP模式指什么?

热门文章

  1. HDU 2089 不要62(挖个坑=-=)
  2. SQL Server阻止了对组件xp_cmdshell过程的解决方案
  3. Ado Recordset.open
  4. 《University Calculus》-chape3-微分法-基本概念、定理
  5. Rejected request from RFC1918 IP to public server address
  6. Kadj Squares - POJ 3347
  7. 深入浅出node(4) 异步编程
  8. Eclipse Code Template 设置自动加注释(转)
  9. 使用BSD socket编写Windows版的网络程序
  10. Qt 发送 https 请求