Git

发布于 2021-02-17  2.41k 次阅读


一,版本控制系统

      为日渐复杂和庞大的开发体系和团队协调,版本控制系统应运而生

      版本控制(Revision control):是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技 术

 一,版本控制系统的分类

版本控制系统分三类:

  1.  本地版本控制
  2. 集中版本控制
  3. 分布式版本控制   

一,本地版本控制

组成部分:一个版本控制库(本地运行版本控制)

本地版本控制工具,只适合个人本地运行,不适合团队协作式开发,只能作为个人开发的版本控制工具,如:RCS

二,集中版本控制

所有的版本数据都保存在服务器中,协同开发者向服务器中上传,同步数据,更新服务器,所有版本信息都保存在服务器上,开发者在本地只能看见提交的版本信息,必须连接中央版本服务器才能同步提交,在本地不能就行操作

弊端:如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有,数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份

三,分布式版本控制

分布式版本控制系统不用必须需要面向中央版本控制器,客户机都有自己的独立性(可以用本地版本库做控制功能),多台客户机之间可以相连,实习文件共享和版本管理

相比较于集中版本控制工具的优点:有本地库可以独立就行版本控制,和远程中央版本库之间通过pull和push就行同步,并不高度依赖中央控制库,

分布式版本控制包含了集中版本控制,但他在此基础又做了结构性的改变

二,Git

Git属于分布式的版本控制工具

一,Git的工作模式

Git分为两大工作模式:

  1. 集中版本控制模式
  2. 开源社区工作模式

一,集中版本控制模式

git也可以设置中中央版本库(远程库),本地只可以只适用于单人开发,设置远程库可以团队协同开发,

二,开源社区工作模式

开源社区模式主要针对的是协同开发的权限问题

二,Git的初始化

git要使用必须在项目跟目录进行本地的初始化,这是git操作的前提

初始化命令:git init

初始化后会形成 .git 的隐藏文件

文件概要:

  • hooks:存放一些shell(Linux)和cmd(windons)脚本文件
  • info:存放仓库信息
  • logs:保存所有更新的引用记录
  • object:保存object对象
  • refs:head:保存当前第一次提交的hash值,remotes:保存远程库的信息如:别名
  • COMMIT_EDITMSG:最新提交的一次Commit Messagegit系统不会用到,给用户一个参考
  • config:仓库的配置文件
  • index:暂存区,一个二进制文件
  • HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值
  • FETCH_HEAD: 是一个版本链接,指向着目前已经从远程仓库取下来的分支的末端版本
  • ORIG_HEAD:HEAD指针的前一个状态

三,Git的总体流程图

Git分三大部分:

  1. 工作区:其实就是本地的项目文件
  2. 暂存区:工作区和本地库中间地带,
  3. 本地库:保存提交文件

三,Git的命令操作

一,设置签名

git签名都使用同一个命令只是属性不同
git的签名分三种:
  1. 系统用户签名
  2. 全局签名
  3. 本地库签名
签名的内容只有两个:可以自定义,只是一个git标识
  1. user.name:用户名
  2. user.email:邮箱
 
1,系统用户签名:git config --global
git config --global user.name '用户名'
git config --global user.email '用户邮箱'
在用户系统目录下生成gitconfig配置文件
 
2,全局签名:git config --system 
git config --system user.name '用户名'
git config --system user.email '用户邮箱'
在git安装目录下的etc下的gitconfig添加签名