首先明白一下基本概念和用法,这段话是从前在看廖雪峰的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 可以理解为“切回某个文件”的意思。但是要注意,这个命令是对工作区生效的。

Git 基础再学习之:git checkout -- file的更多相关文章

  1. Git基础命令学习

    Git是项目代码管理软件 主要管理逻辑如下: 所有代码保存在远程,本地获取远程代码保存在本地仓库,并于本地工作目录修改代码 修改完成后,提交到本地暂存区,添加必要注释,再尝试提交到远程仓库 若发生冲突 ...

  2. git基础命令学习总结

    git版本升级 git clone git://git.kernel.org/pub/scm/git/git.git 列出所有 Git 当时能找到的配置 git config --list git c ...

  3. 『现学现忘』Git基础 — 11、配置Git用户签名的方式

    目录 1.配置Git签名 (1)语法 (2)配置系统用户签名 (3)配置全局用户签名 (4)配置本地用户签名 2.查看三个配置文件的用户签名 (1)语法 (2)查看项目/仓库级别的配置文件信息(loc ...

  4. 『现学现忘』Git基础 — 19、在Git中进行忽略文件操作

    目录 1.忽略文件说明 2.忽略文件的原则 3..gitignore忽略规则 4.忽略文件的三种方式 (1)忽略单个仓库中的文件(远程共用) (2)忽略单个仓库中的文件(本地使用) (3)全局忽略 1 ...

  5. 『现学现忘』Git基础 — 7、设置Git Bash终端默认路径

    目录 1.Git Bash默认路径 2.如何查看Git Bash终端默认路径 3.如何修改Git Bash终端的默认路径 4.拓展:指定目录进入Git Bash终端 5.注意事项 如果您不熟悉Git命 ...

  6. 『现学现忘』Git基础 — 26、给Git命令设置别名

    目录 1.什么是Git命令的别名 2.别名的全局配置 3.别名的局部配置 4.删除所有别名 5.小练习 1.什么是Git命令的别名 Git中命令很多,有些命令比较长,有些命令也不好记,也容易写错. 例 ...

  7. git 基础命令 学习总结

    首先介绍一个git 里工作流的概念: 你的本地仓库由 git 维护的三棵“树”组成.第一个是你的 工作目录,它持有实际文件:第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动:最后是 H ...

  8. 『现学现忘』Git基础 — 10、配置Git用户签名说明

    目录 1.为什么要创建用户签名 2.为什么要在Git中配置这些信息 3.创建用户签名的方式 4.总结 1.为什么要创建用户签名 作为版本控制系统的客户端,每台客户机对版本库的所有提交操作,都需要注明操 ...

  9. C#基础再学习

    本次观看C#中级教程视频进行对C#一些基础的再度学习,加深印象. 1.对于错误和异常. 错误可能是语法错误也可能是逻辑错误.可以通过断点进行调试. 断点快捷键F9. 异常,通过try catch捕获, ...

随机推荐

  1. JS、C#编码解码

    escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@ ...

  2. [QT]构建正则表达式测试

    正则表达式是个强大的东西 暂时先记录一个用法: QString str = "Peak memory: KEY s"; QString data = "Peak memo ...

  3. Oracle 插入超4000字节的CLOB字段的处理方法

    最近在做系统开发的时候需要想Oracle数据库插入超过4000字节的CLOB字段,在网上查询了N久才发现下面的解决方案,故留存以备后查. 我们可以通过创建单独的OracleCommand来进行指定的插 ...

  4. 关于View和VIewController的关系和理解

    之前看过关老师的视频之后就有写关于视图切换的程序,不过那是很久之前了,那时候也不知道什么是View,什么是VIewController,就知道照着写.这次项目的时候,我又碰到了这个问题,我自以为比较能 ...

  5. asterisk manager api 配置 (manager.conf)

    http://blog.csdn.net/niino/article/details/5748805 要激活AMI,需要在/etc/asterisk/manager.conf中,[general]块下 ...

  6. Mondriaan's Dream - POJ 2411(状态压缩)

    题目大意:有一些1*2的矩形,现在用这些小矩形覆盖M*N的大矩形,不能重复覆盖,并且要覆盖完全,求有多少种覆盖方式. 分析:可以使用1和0两种状态来表示这个位置有没有放置,1表示放置,0表示没有放置, ...

  7. Hibernate自定义数据库查询(排序、输出条数)

    Hibernate数据库操作类(eg:TexDAO.java) /* * queryString HQL语句,first开始条数, max输出条数 ,norder排序 * 例: List lis = ...

  8. Python - 元组(tuple) 详解 及 代码

    元组(tuple) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17290967 元组是存放任意元素集合,不能修 ...

  9. 如何在word2007中并排查看对比显示两个文档

    使用word编辑或修改文件时,有时会需要对两个文档进行对比,此时就应该使用并排查看功能. 点击“视图”菜单中的“并排查看” 所打开的两个文档就会同时打开,并排显示 可点击“同步滚动”设置或取消同步滚动

  10. c++ 文件写样例

    #include <iostream> #include <sstream> #include <fstream>> using namespace std; ...