Git和其他版本控制工具不同的地方就是有暂存区的概念

工作区(Working Directory)

就是在电脑界面上能够看到的目录

版本库(Repository)

工作区下面有个一个.git文件夹,也就是上一篇文章git init之后生成的文件夹。这个就是版本库。Git的版本库里存了很多东西,其中最重要的称为stage的暂存区,还有GIt为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

将文件往GIt版本库里添加分为两步执行:

第一步是用git add将文件添加,实际上就是把文件从工作区添加到暂存区

第二步是用git commit提交更改,实际上就是把文件从暂存区的所有内存提交到当前分支

简单的理解就是把所有修改先放到暂存区上,然后一次性提交暂存区的所有修改。

现在来实验下看看,使用Git Bash需要先cd到版本库所在路径

git status查看工作区状态

git diff对比工作区和暂存区的不同

git diff --cached 对比暂存区和分支的不同

可以git diff 具体文件名,对比某个具体文件,上面是对比整个。

跟着上一文章,创建完版本库后,添加文件到版本库后不做任何操作,使用git status,这时提示工作区是干净的。

使用git diff和git diff --cached应该也都是没有提示不同的

在工作区下新增一个文件,就叫lesson.txt吧,写不写东西随意,如果要写内容请不要用windwos自带的记事本打开。请用别的文本编辑器

提示lesson.txt状态是untracked。因为还没有被添加过。使用git diff还是没有提示。我以为会提示啥的。貌似对比的是只对比已经add的文件

使用git add将leeson.txt提交到暂存区,然后在git status看下状态

提示有修改还没有提交到分支,再使用git diff,因为刚刚add所以肯定没有不同,所以没提示正确。

使用giit diff --cached看下暂存区和分支的对比

提示有一个新增的file

往lesson.txt里面新增或者修改内容,然后再git status一下

会有两个记录,第一个绿色的是提示我们,上次添加到暂存区的修改,还没有提交到版本库。第二个红色的是提示我们,有修改的内容,还有没有添加到暂存区。

使用git diff看下,可以提示的不同,显示的格式是Unix通用的diff格式

第一行diff -get a/lesson.txt b/lesson.txt   表示为git格式的diff,进行比较的是a版本(变动前)的文件和b版本(变动后)的文件

第二行表示两个版本git哈希值(index区域的ff3de11对象,bcd74af这个是工作区的对象,最后六位数是对象的模式)

第三第四行 ---表示变更前的版本  +++表示变更后的版本

之后的行都是diff格式展示的内容

现在git commit一下,把暂存区的内容提交到分支,备注一下新增lesson.txt文件。

使用git diff --cached对比一下暂存区和分支,应该不会提示不同。

最后git add一下lesson.txt,把修改后的添加到暂存去,然后git diff对比下。然后git commit。

Git学习笔记03-工作区和暂存区的更多相关文章

  1. Git学习笔记二--工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 简单理解: 我们使用mkdir Git在d盘下创建的文件夹,就是工作区,我们编辑readme.txt文件就是在工作区下完成的: gi ...

  2. [原]git的使用(二)---工作区和暂存区

    接着上篇 git的使用(一) http://www.cnblogs.com/horizonli/p/5323363.html 6.工作区和暂存区(中转站) 工作区(Working Directory) ...

  3. 【Git】三、工作区、暂存区、版本库

    一.基础概念 工作区:电脑中可以看到的目录,为电脑中的项目文件 暂存区:暂存修改的地方 版本库:存放项目的各个版本文件 二.详细介绍 工作区为我们工作所使用的目录,在工作区我们对项目文件进行增删改查. ...

  4. Git时光机穿梭之工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...

  5. GIt学习第二天之版本回退、工作区和暂存区

    搬运自 ‘廖雪峰的官方网站’ 地址:https://www.liaoxuefeng.com/ 1.版本回退 在Git中,我们用git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花 ...

  6. Git学习——工作区和暂存区

    工作区就是我们的电脑上的git初始化目录.版本库就是我们工作区中的隐藏目录.git.版本库中分为两个部分:(1)stage(index)暂存区:git add <file>命令后file就 ...

  7. Git学习总结三(工作区和暂存区、撤销修改)

    工作区和暂存区 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区: 版本库(Repository) 工作区有一个隐藏目录.git, ...

  8. git工作区、暂存区、版本库之间的关系

    区分三者关系 Git最让你迷惑的无非是它里面的各种概念了,如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识,笔者认识也有限这里只说说个人对使用Git的感受,说一下它里面的几个最常用的概念的理 ...

  9. git中的版本库,暂存区和工作区

  10. git(工作区,暂存区,管理修改,撤销修改,删除文件)

    工作区和暂存区 984次阅读 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的l ...

随机推荐

  1. java虚拟机的内存模型

    一.为什么要了解java虚拟机的内存模型 java虚拟机作为java代码运行的平台,是java技术的基石.了解java虚拟机的内存模型也就变得十分必要.它能帮助我们更好的了解java代码的运行机制,更 ...

  2. Linux-CentOS 查看(监控)服务器网卡流量

    1.使用系统自带的命令: watch more /proc/net/dev 2. 使用nload命令,需要自行安装 1)# yum install flex byacc libpcap ncurses ...

  3. 编写高质量Python代码总结:待完成

    1:字符串格式化 #避免%过多影响阅读 print('hello %(name)s'%{'name':'tom'}) #format方法print('{name} is very {emmition} ...

  4. BIO和NIO

    在了解BIO,NIO,AIO之前先了解一下IO的几个概念:   1.同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous com ...

  5. 细说log4j之log4j 2.x

    官网:https://logging.apache.org/log4j/2.x/ 1. 主要组件: 从图中可以看出,log4j2中的主要组件为:Filter,Appender,Logger,他们的层次 ...

  6. vim学习之git for windows

    这是我在博客园的第二篇文章,今晚是在线的特殊日子,应小编的要求不想多讲,喝了点酒,感觉到压力和挑战性,抽了几根烟,现在有点飘飘欲仙的感觉.在长江大学11教的6楼,是长大在线的办公室,这个晚上总是不关灯 ...

  7. [C++]2-4 子序列的和

    /* 子序列的和(subsequence) 输入两个整数n<m<10^6,输出1/(n^2) + 1/((n+1)^2) + 1/((n+2)^2) 1/((n+3)^2) + ... + ...

  8. luogu P2470 [SCOI2007]压缩

    传送门 dalao们怎么状态都设的两维以上啊?qwq 完全可以一维状态的说 设\(f[i]\)为前缀i的答案,转移就枚举从前面哪里转移过来\(f[i]=min(f[j-1]+w(j,i))(j\in ...

  9. steps/train_lda_mllt.sh

    LDA+MLLT指的是在计算MFCC后对特征进行的变换:首先对特征进行扩帧,使用LDA降维(默认降低到40),然后经过多次迭代轮数估计一个对角变换(又称为MLLT或CTC) .详见 http://ka ...

  10. Vi编辑器中全局替换

    1 例如下图 %s/hello/java/g #(等同于 :g/hello/s//java/g) 替换每一行中所有 hello 为 java 2 操作截图 替换所有的exec-avro-agent-L ...