git工作区和版本库的概念和一个简单的例子

来源:互联网 发布:淘宝买烟怎么搜索 编辑:程序博客网 时间:2024/04/27 13:50

//再简单学习了一下git和github之后,我发现对于github的工作区间,暂存区和版本库的概念有些模糊,似乎知其然,知其不然,于是上网查阅各种资料,终于有点懂了。


1.工作区(Working Directory)

在通过git init 命令后在当前目录中出现.git目录,该目录默认是隐藏的,需要关闭显示隐藏文件才能看到。实际上执行git init 命令后,当前目录就成为了工作区(工作区可以理解为操作本地仓库的车间),而且,可以发现如果继续在工作区进行创建其他的文件夹等操作,.git目录只有一个。

所以我不是很认同工作区就是在电脑里能看到的目录这一说法,因为在我电脑里创建的每一个工作区都进行了git init操作。

2.版本库(Repository)

本地仓库和版本库是一个意思,他们的英文都是Repository。版本库就是你工作目录中的.git文件夹,版本库中存放了很多东西,比较重要的就是stage(或者叫做index)有一集被自动创建的master分支,还有指向master的指针HEAD。我们不能手动修改版本库里边的任何数据,否则将会造成不可预料的错误。

3.暂存区(stage)

暂存区:英文叫stage, 或index。在版本库.git)目录下,有一个index文件。它实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等),文件的内容并不存储其中,而是保存在Git对象库(.git/objects)中,文件索引建立了文件和对象库中对象实体之间的对应。如果当前仓库,有文件更新,并且使用git

git框架的整体规划结构见下图。




把文件网Git库中添加的时候分两步执行的:

(1)用git add 把文件添加进去,实际上就是把文件添加到stage中

(2)用git commit 提交更改,实际上就是把stage的所有内容提交到当前分支。

因为我们创建git版本库时,git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交修改。




下边我们做一个简单的例子,以便区分版本库和工作空间。

首先在一个工作区中创建一个txt,文件并随便写几个单词,在这里我创建的aa.txt文件。




查看文件夹里边的内容,此时对文件夹的内容进行修改保存(我在原有文本下加了一行ahaaha),然后运行如下指令

git checkout  --命令用于将版本库中中aa.txt中的文档内容读入到当前工作空间的aa.txt文档中。




再次对文件进行相同的修改,并将文件提交到暂存区和版本库之后执行git checkout --命令观察变化





参考:

https://my.oschina.net/u/1757002/blog/534391

http://blog.csdn.net/u011116672/article/details/51234118

http://san-yun.iteye.com/blog/2061647

本文

1 0
原创粉丝点击