git详解1 - 工做区、暂存区、版本库、远程仓库

  git是当前应用最广的版本控制工具。用好git是一个庞大工程必不可少的条件之一。html

一、概念

  一、四个工做区域

    Git本地有四个工做区域:工做目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系以下:git

Workspace: 工做区,就是你平时存放项目代码的地方算法

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息安全

Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到全部版本的数据。其中HEAD指向最新放入仓库的版本服务器

Remote: 远程仓库,托管代码的服务器,能够简单的认为是你项目组中的一台电脑用于远程数据交换工具

  二、文件的四种状态

  版本控制就是对文件的版本控制,要对文件进行修改、提交等操做,首先要知道文件当前在什么状态,否则可能会提交了如今还不想提交的文件,或者要提交的文件没提交上。GIT不关心文件两个版本之间的具体差异,而是关心文件的总体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件总体是否改变的方法就是用SHA-1算法计算文件的校验和。spa

Untracked:   未跟踪, 此文件在文件夹中, 但并无加入到git库, 不参与版本控制. 经过git add 状态变为Staged.版本控制

Unmodify:   文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中彻底一致. 这种类型的文件有两种去处, 若是它被修改, 而变为Modified.若是使用git rm移出版本库, 则成为Untracked文件htm

Modified: 文件已修改, 仅仅是修改, 并无进行其余的操做. 这个文件也有两个去处, 经过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,blog

                返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。(注意,这里cheakout只会将没有add过的文件丢弃,若是文件已经被加入暂存区则不会被丢弃。)

Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,

               文件状态为Modified

下面的图很好的解释了这四种状态的转变:

 

 

 

 

 

 

 

 

 

 

 

转载自:雨点的名字

相关文章
相关标签/搜索