git工做区、暂存区、版本库之间的关系

区分三者关系

       Git最让你迷惑的无非是它里面的各类概念了,若是是刚开始接触Git但愿看完本篇介绍以后有一个清晰的认识,笔者认识也有限这里只说说我的对使用Git的感觉,说一下它里面的几个最经常使用的概念的理解。linux

       在初始化git版本库以后会生成一个隐藏的文件 .git ,能够将该文件理解为git的版本库 repository,而咱们本身创建的项目文件夹即工做区 working directory ,在.git 文件夹里面还有不少文件,其中有一个index 文件 就是暂存区也能够叫作 stage ,git还为咱们自动生成了一个分支master以及指向该分支的指针head ,以下图   git

       

       从图中能够看出来respository包括分支master和stage, working diretory 能够理解为咱们打开开发环境如eclipse,里面的内容即工做区的内容,在工做区里面有的代码以及配置文件等咱们须要提交到版本库里面,最终是到了分支master上面,暂存区只是一个临时保存修改文件的地方。eclipse

       实例讲解

       平时咱们使用的命令git add file1 是把文件从工做区提交到暂存区,git commit -m "prompty" file1 是把文件从暂存区提交到了分支master下面,这里由于只有一个分支master,就提交到master上了,下面让咱们再来结合具体例子来讲明一下。工具

       咱们修改一下tgb.txt文件增长一行 "l love you" ,并新建一个文件 test1.txt,如今尚未执行git add命令,这种修改都还停留在工做区内,用git status查看状态,如图学习

      

       上图代表修改并无在暂存区里面,当咱们执行git add test1.txt ,git add tgb.txt后,再来看一下状态spa

        

      这两个文件被添加到了暂存区,可是尚未提交,当执行git commit -m "tijiao" 后文件即从暂存区到了master分支上面,如图将看不到暂存区里面有什么内容。设计

     

      Git管理的是添加到暂存区里面的修改,包括增删改等等都算是能够跟踪的文件变更,也能够说git只管理咱们变更的部分变更的咱们才往暂存区提交,这也是git比其余版本系统设计优秀的一点,之后,会详细说一下各个版本系统管理文件是如何管理的,他们的设计思想是什么。指针

       经过三个命令理解

      下面还有一个须要注意的git diff 命令的差别:ip

  git diff 比较的是工做区和暂存区的差异
  git diff --cached 比较的是暂存区和版本库的差异
  git diff HEAD 能够查看工做区和版本库的差异开发

      经过一个添加文件既能够明显看出他们之间区别,不过这里有一个前提是已经提交到暂存区的文件修改的时候才能够看出明显区别,这也是觉得啥git只能跟着提交到暂存区的文件,若是只是在工做区新建一个文件,那么输入这三个命令都没有结果为空白。

      咱们继续修改tgb.txt,在文件末尾添加  we are good boy.

      分别输入三个命令,效果为:

      

      从图中能够看出,工做区与暂存区、工做区与版本库都有变化,而版本库与暂存区并无变化。进一步执行git add tgb.txt 

        

      执行git add tgb.txt以后发现git diff没有输出内容,代表工做区与暂存区已经同步,暂存区与版本库、版本库与工做区没有同步。最后一步执行git commit 

         

       当执行完git commit后,三个命令都没有输出结果,代表咱们修改的文件已经被同步的版本库,已经被版本库管理起来了。

总结:

       版本库管理文件会很方便尤为是代码,等好多的命令熟了以后也会以为并非那么难用,主要使用的时候以为git反应比较快,并且速度还能够,如今不少人都在window开发而喜欢具备界面的版本工具软件,而不去学习git命令,学习一些git 命令仍是颇有用的,假如让你去linux上面开发或者在linux系统上面管理代码,你就会彻底一筹莫展不懂原理也不懂命令,须要重新学习重新认识git。

       能够说各类命令是git的根本,学习了命令不管哪个界面管理工做一看也就会了,如今有好多的git可视化工具,不如学几个命令,何况再多的界面底层也是调用这么多的命令来实现的,有了界面就让咱们变懒了,下降了开发者的水平,提升开发效率的同时也失去了更多的学习、研究机会。

相关文章
相关标签/搜索