Git使用_第1弹

Git使用_第1弹

前言:
在写Sast-Evento的时候深刻意识到了自己Git使用相关知识的匮乏,Git作为版本控制功能强大,我却只会删仓库(悲)。痛定思痛,决定好好学一学Git。
本系列为"Pro Git"这本书的学习笔记,感谢编写这本书的贡献者们

分布式版本控制系统

分布式版本控制系(Distributed Version Control System,简称DVCS) 在这类系统中,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的clone操作,实际上都是一次对代码仓库的完整备份。
Git就是一种分布式的版本控制系统

Git的一些特点

直接记录快照,而非差异比较

Git和其它版本控制系统的主要差别在于 Git 对待数据的方式。从概念上来说,其它大部分系统以文件变更列表的方式存储信息,这类系将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异,它们通常称作基于差异的版本控制。如下图

而Git不按照以上方式对待或保存数据。反之,Git更像是把数据看作是对小型文件系统的一系列快照。在Git中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。为了效率,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git对待
数据更像是一个快照流。如下图

近乎所有操作都是本地执行

在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。

Git保证完整性

Git中所有的数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。若你在传送过程中丢失信息或损坏文件,Git 就能发现。Git用以计算校验和的机制叫做 SHA-1 散列。

事实上,校验和在数学上仍然有两个文件不同但校验和相同的情况,但是几乎只要不是恶意设计,碰撞的概率小到可以忽略不计,使用更复杂的方法还可以使得概率进一步降低

Git一般只添加数据

你执行的Git操作,几乎只往Git数据库中 添加 数据。你很难使用Git从数据库中删除数据,也就是说Git几乎不会执行任何可能导致文件不可恢复的操作

文件的三种状态

Git有三种状态,你的文件可能处于其中之一: 已提交(committed)、已修改(modified)和已暂存(staged)。

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的Git项目拥有三个阶段: 工作区暂存区以及Git目录

工作区是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在Git仓库目录中。按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。这是Git中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。

基本的Git工作流程如下

  1. 在工作区中修改文件。
  2. 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
  3. 提交更新,找到暂存区的文件,将快照永久性存储到Git目录。

如果Git目录中保存着特定版本的文件,就属于已提交状态。如果文件已修改并放入暂存区,就属于已暂存状态。如果自上次检出后,作了修改但还没有放到暂存区域,就是已修改状态。

Git配置文件

在Windows操作系统下通过下面这条指令获得配置文件的位置

1
$ git config --list --show-origin

用户信息

安装完Git之后,要做的第一件事就是设置你的用户名和邮件地址。这一点很重要,因为每一个Git提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:

1
2
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

再次强调,如果使用了--global选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情,Git都会使用那些信息。当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有--global选项的命令来配置。很多GUI工具都会在第一次运行时帮助你配置这些信息。

总结

我认为配置Git环境这个事情,应当在安装时顺带查查帮助文档,而不是写在笔记里,反正每次都要找个地方查,还不如留给时刻更新的强大的互联网(乐)
上面都是一些前言,具体需要完成的部分需要来iu给下一份blog