Git 基础再学习之:git checkout -- file

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

时间: 2024-12-28 16:30:09

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

Git基础

这次开发要使用Git取代SVN.借机学习了一二,跟大家分享一下. Git简单介绍 一句话总结的说,Git是一个开源的分布式版本号控制系统,由Linux内核开发者开发,现已用来管理android等多个大型项目. 设计目标: 高速操作 简单设计 并行开发(上千个) 全然分布式 能力超强(类似Linux内核管理) 和SVN 提到版本号管理系统,自然会想到SVN,假设你原来是使用tortoiseSVN操作,你如今能够用tortoiseGit.表面上看.你会发现tortoiseGit除了多了几个诸如Pus

git基础介绍

git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件状态归属 二.主机之间的操作:克隆他人的项目:合并进行中的项目 三.git通讯录:设置推送的地址 四.git推送到github: github是目前最大的开源代码库,将自己创造的项目传到github,不仅可以让大牛们帮你优化不足,还能让后来的学弟们汲取你的精华,现在就开始练习使用github吧!

Git 学习之Git 基础(二)

Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某些更新.我们还会展示如何让 Git 忽略某些文件,或是名称符合特定模式的文件:如何既快且容易地撤消犯下的小错误:如何浏览项目的更新历史,查看某两次更新之间的差异:以及如何从远程仓库拉数据下来或者推数据上去. 取得项目的 Git 仓库 有两种取得 Git 项目仓库的

【git学习五】git基础之git分支

1.背景 最早用github的时候,我傻傻的问舍友大神,git里面的branch是干什么的,他用了很直白的解释,我至今还记得."branch就是你可以自己建立一个分支,随便乱搞而不影响整个项目".git分支应该是git最nb的特色吧,分支的建立和合并都十分方便. 大体的原理是这样的(图借用progit),比如说我们有一个master,还有一个分支是testing,git用head指针标记哪个分支正在被执行操作. 2.分支管理 首先来说下我们的现有的master,它是一个readme文件

如何理解git checkout -- file和git reset HEAD -- file

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374831943254ee90db11b13d4ba9a73b9047f4fb968d000 首先需要知道工作区(working diretory)和暂存区(Stage)这两个概念.工作区的该概念不仅包含你实际操作.更改的文件还应当包括当前修改但未add存入暂存区的文件变化信息,暂存区的作用则是临时存储文件的变化信息,在gi

【git学习二】git基础之git管理本地项目

1.背景 git基础打算分两部分来说,一部分是对于本地项目的管理,第二部分是对于远程代码仓库的操作.git执行本地项目管理包括对于相关文件的追踪,暂存区的比较分析,提交,撤销等功能. 2.本地项目管理 首先mkdir一个文件夹,叫做GitTestFile,然后执行下面代码,创建git的管理配置 git init 接着加入如下代码,git add . ,把项目加入跟踪队列 git add . 可以用git status查看状态 加入readme文件,vim readme.txt .输入git st

[git学习:Pro git(2)]Git基础

Getting a Git Repository(取得项目的Git仓库) 一在工作目录中初始化新仓库: git init 初始化后,在当前目录下会出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录下不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中任何一个文件. $git add *.c #git add 开始跟踪文件,begin to tracking a new file $git add README $git commit

git学习——Git 基础要点【转】

转自:http://blog.csdn.net/zeroboundary/article/details/10549555 简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了 Git 的思想和基本的工作原理,用起来就会知其所以然,游刃有余.在开始学习 Git 的时候,请不要尝试把各种概念和其他的版本控制系统诸如 Subversion 和 Perforce 等相比拟,否则容易混淆每个操作的实际意义.Git 在保存和处理各种信息的时候,虽然操作起来的命令形式非常相近,

【git学习四】git基础之git为项目打标签

1.背景 今天学习了下如何给项目打标签,为此项目的修改标记版本号,然后可以直接推送版本号到服务器上,方便了很多,而且便于对项目进行管理. 2.打标签 1.查询已有标签,可以使用git tag命令,查询某个特定版本可以git tag -l 'v*' git tag 2.为版本创建标签 git tag -a v1.4 -m 'my version 1.4' 3.查看添加的标签,git show命令 git show 4.也可以对之前的某次commit加标签 git tag -a v1.2 9fceb