Git的基本知识

来源:互联网 发布:python 转换为unicode 编辑:程序博客网 时间:2024/06/06 01:40

Git的基本知识

也就是简而言之Git是什么。这是一个重要的要学习的区域,因为如果你理解了什么是Git和Git是怎么工作的,那么高效的使用Git对你来说将变得非常简单。当你学习Git的时候,尝试忘掉你知道的其他版本管理系统知识,如SVN和Perforce,这样做能够帮你在使用Git时避免一些迷惑。Git在存储和考虑信息方面与其他系统有很大的不同,即使用户接口看起来相当相似。理解那些差异可以帮你在使用它的时候免于迷惑。

Snapshots,Not Differences(是快照,不是差异)

Git与其他版本管理系统最主要的不同是它考虑它的数据的方式。从概念上讲,绝大多数其他版本管理系统以基于文件的改变的列表的方式存储数据,这些版本管理系统(CVS,SVN,Perforce等等)将他们所保存的信息作为文件集合,然后通过时间判断每个文件的改变。

image

Git并不这样考虑和存储它们的数据,相反,Git认为它的数据更像一个微型文件系统的快照集。每次你提交或者保存你的项目的Git状态,Git会拍下那一瞬间你所有文件的样子,并且给这个快照存储一个引用。为了高效,如果你的文件没有发生改变,Git不会在次存储你的文件,只会生成一个前面已存储文件的一个链接。Git考虑数据更像作为快照流考虑。

image

这是Git同其他几乎所有版本管理系统之间的一个重要区别。它使得Git重新考虑几乎版本控制的每一方面,而其他版本管理系统则从其上一代拷贝。这同样使得Git更像一个小型的文件系统,而不仅仅只是一个版本管理系统。如果要探索这种方式考虑数据的好处,查看git branching。

Nearly Every Operation Is Local(几乎都是本地操作)

Git中大多数操作仅需要操作本地文件和资源,通常不需要网络中其他电脑上的信息。因为你在你的本地硬盘上拥有你项目所有的历史版本,大部分操作完成看起来都像瞬时一样。

例如,要浏览项目的历史记录,git不需要从服务器获取版本历史然后展示给你,它仅仅需要从你的本地git库里读取即可。这意味着你用Git查看项目历史时几乎是即时的。如果你要查看一个文件的一个月前版本与现有版本的差异,Git能够查找一个月前的此文件然后作一个本地差异计算,而不需要不得不要么请求远程服务,要么从远程服务拉取此文件一个月前的版本。

这也意味着如果没有网络或者VPN,你受影响不能做的将会很少。

The Three States(三种状态)

现在,注意了,如果你想要顺利的Git的其他知识,这三个状态相当重要。在Git中你的文件存在三种主要状态:committed、modified和staged。Committed表示数据已安全的存入你的本地Git库;modified表示你已经改变了你的文件,但是你还没有将其提交到你的本地git库;Staged表示你已经在你的一个已修改文件的现在版本中标记下次提交。

这导致了Git项目中有三个主要区域:git目录、working tree和staging区域。

image

git目录是Git存储你项目元数据和对象数据库的地方。这是Git最重要的部分,它是在你从别的电脑clone一个git库时复制的什么。

working tree是项目的一个版本的单个检出。检出的文件是从Git 目录中拉取的,并且放致在磁盘上以供你的修改或者使用。

staging区域是一个文件,通常在你的git目录中包含,存储关于你下次提交的信息。它有时也被叫做”index”.

如果一个文件的版本存在于git目录中,它被认为是已提交了;如果它被修改了或者添加到staging区域了,它被认为是staged;如果它从检出后改变了,但是还没添加到Staged区域,它被认为modified。

原创粉丝点击