git概述

目前全世界用得最多的版本控制工具git和SVN,其中git是分布式控制系统,SVN是集中式控制。下面先说说集中式和分布式控制的区别。

一、集中式VS分布式

集中式

工作过程

在这里插入图片描述
1、从服务器下载最新代码。

2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(对代码改来改去,想看前一个小时自己修改了哪些代码,就需要这样做)。

3、从服务器下载最新代码,并解决服务器版本库与本地代码的冲突,将自己的分支合并到服务器主分支上。

集中式:如果中央服务器出故障,SVN的历史库存在于中央仓库,每次对比与提交代码都必须连接到中央仓库才能进行;断网的情况下,其实也能是工作,但是由于没有版本控制的记录,当多人修改后就比较难以快速的合并。

数据存储方式

大部分版本控制系统以文件变更列表的方式存储信息,它们将保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
在这里插入图片描述

分布式

工作过程

在这里插入图片描述
1 从服务器上克隆完整的Git仓库(包括代码和版本信息)到本机上。

2 在自己的机器上根据不同的开发目的,创建分支,修改代码。

3 在单机上自己创建的分支上提交代码、合并分支,提交到本地版本库。

4 把服务器上最新版的代码pull/fetch下来,解决服务器版本库与本地代码的冲突,然后跟自己的主分支合并。

5 如果没问题,push到服务器

分布式:如果中央服务器故障,Git本地仓库包含代码库还有历史库,不需要网络,自己可以在脱机环境查看开发的版本历史,在本地的环境开发也可以进行比对,回退等操作。Git都在本地保存了版本记录,所以大家合并起来就容易多了,等到服务器好了,直接提交就行了;或者可以随时创建一个新的中央库,随便从其他人那里复制一个然后同步就立刻恢复了中央库。

数据存储方式

Git把数据看作是对小型文件系统的一组快照。 每次你提交更新,或保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。
为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。
在这里插入图片描述

git相关概念

Git工作区域种类:

工作区(工作目录):电脑里能看到的目录
版本库( Git 仓库目录):工作区有一个隐藏目录.git,就是Git的版本库。
暂存区域:一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被 称作`索引’,不过一 般说法还是叫暂存区域。
tips:Git版本库中为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述
被管理文件的几种状态:

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

Git 工作流程:在工作目录中修改文件  暂存文件将文件的快照放入暂存区域  提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
在这里插入图片描述

下载安装

1、从Git官网直接 https://git-scm.com/downloads下载安装程序

2、安装完成后,命令行输入“git --version”,显示如下信息表示安装成功。
在这里插入图片描述
3、设置用户信息,用户名称与邮件地址,每一个Git的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改
$ git config --global user.name “Your Name”
$ git config --global user.email " [email protected] "
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都 会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

4、检查配置信息
git config --list

git知识点汇总

git仓库

git仓库可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建git仓库

有两种方法创建Git仓库

1、通过$ git init命令在现有目录中初始化仓库

在这里插入图片描述
在这里插入图片描述
该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的Git仓库中所有的必须文件,就是Git的版本库。

如果你是在一个已经存在文件的文件夹(而不是空文件夹)中初始化Git仓库的话。

文件并不会被跟踪,通过git add 命令来实现对指定文件的跟踪,然后执行git commit提交(命令后面会讲)。

2、从一个服务器克隆一个现有的 Git 仓库

$ git clone https://github.com/test/test

在当前目录下创建一个名为“test”的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。
如果进入到这个新建的“test”文件夹,发现所有的项目文件已经在里面了,并且都被git管理起来了,直接使用即可,无需执行add和commit命令。

也可以自定义本地仓库的名字,使用如下命令:

$ git clone https://github.com/test/test myTest

结果和上一个命令结果相同的,只是本地创建的仓库名字变为myTest。

Git 支持多种数据传输协议。上面使用的是 https:// 协议,也可以使用 git:// 协议或者使用 SSH 传输协议,比如 user@server:path/to/repo.git ,主要看git服务器的配置。

理解git文件的生命周期

工作区下的每一个文件分两种状态
已跟踪:指那些被加入了版本控制的文件,在上一次快照中有它们的记录,工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
未跟踪:工作区中除已跟踪文件以外的所有其它文件,它们既不存在于上次快照的记录中,也没有放入暂存区。
在这里插入图片描述
初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章