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
本文
- git工作区和版本库的概念和一个简单的例子
- Git的工作区和版本库
- 六、Git工作区和版本库的关系
- git的reset和版本概念
- git学习和使用(二) 远程版本库的操作和一些git的概念
- Git的工作区、暂存区和版本库之间的关系及其互操作
- Git的工作区、暂存区和版本库之间的关系及其互操作
- git的三个核心概念(版本库,工作区,暂存区)
- git 的使用(一)工作区暂存区和版本库
- Jena的简单理解和一个例子
- CVS和RCS的一个简单例子
- Jena的简单理解和一个例子
- Spring概念的解释和两个简单例子
- 版本控制的概念、分布式、Git 简介及其工作流程
- Git 工作区、暂存区和版本库
- Git 工作区、暂存区和版本库
- Git工作区、暂存区和本地版本库关系
- git 工作区、版本库和暂存区
- 括号匹配问题
- java的文件IO编程知识总结
- 理解JQuery对象$.html
- JS严格模式的限制
- ubuntu 更新软件
- git工作区和版本库的概念和一个简单的例子
- poj1986 (树链剖分+线段树或者LCA+RMQ)
- 单链表
- eclipse中配置struts2出现There is no Action mapped for namespace [/] and action name [Login] associated w
- spss、R语言、Python数据分析系列(4):python读取外部数据
- 【js】javascript中的原型prototype
- Spring的Bean之Bean的基本概
- ARM Linux启动流程分析——start_kernel前启动阶段(汇编部分)
- java中数组的定义