写在前面:网上有很多Git的教程,比较优秀的有廖雪峰廖大的Git教程
但是我在学习的时候,感觉有些方面还是比较疑惑,虽然用GitHub DeskTop这种UI控制的Git版本,关于Git比较核心的部分还是理解不深,因此基于Git官方文档进行可学习并且记录
1.Git 简史
同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统(见第三章),可以应付各种复杂的项目开发需求。
2.Git基础
直接记录快照,而非差异比较
实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
近乎所有操作都是本地执行
这是Git相当好的一个优点,因为你不需要每次都去一个服务器下载整个项目,然后再和本地文件进行比较。
举个例子,如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来,而直接从本地数据库读取后展示给你看。所以任何时候你都可以马上翻阅,无需等待。如果想要看当前版本的文件和一个月前的版本之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算,而不用请求远程服务器来做这件事,或是把老版本的文件拉到本地来作比较。
文件的三种状态,Git本地文件存储的三个区域
这是本教程最重要的一点,了解清楚Git内部存储文件的三种状态可以说十分的重要,后面学习要很清楚到底文件发生了什么,或者说转换了什么状态
对于任何一个文件,在 Git 内都只有三种状态:
- 已提交(committed)
- 已修改(modified)
- 已暂存(staged)
已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
同时存在新添加未进入Git 内部的文件状态
- 未跟踪(untrack)
同时Git内部有三个文件存储区域:
- 工作目录(working directory):即正在编辑的文件状态。文件状态为未跟踪(untrack)和已修改(modified)在此区域内。
- 暂存区(staging area):保存了下次将提交的文件列表信息。文件状态为已暂存(staged)在此区域内。
- 版本快照仓库(git directory或者 repository):提交到本地快照仓库的文件。
当然如果你使用过GitHub你会了解到远程仓库:
远程仓库(remote repository):是存在于远程计算机(服务器)上的版本快照仓库
3.Git安装
Windows下,可以直接去Git官网进行下载安装:https://git-scm.com/
和普通软件的安装没有任何区别,安装完成以后打开CMD,输入git --version
看到如下信息说明已经安装成功。
对于Linux下Git的安装,不同Linux发行版本有不同的安装软件方式
常见的发行版:
- Ubuntu下:
apt install git
- CentOS下:
yum install git
当然你也可以选择自己解压压缩包,然后手动make
安装。
参考文献: