一.Git分布式管理系统

在本地管理,Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,它采用了分布式版本库的方式,不必服务器端软件支持。可以说它是一个开源的分布式版本控制系统,用于敏捷高效地处理任何小或者大的项目

为了保护数据的安全性

  • githug:公有云代码管理

  • gitlab:私有云代码托管平台

  • svn

集中式 从中央代码服务器获取具体的代码,把代码下载到自己的本地,然后把代码在有网络的情况下提交到中央服务器。典型的产品是SVN,所谓集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库瘫痪或者是不可访问的情况下,所有的使用者无法使用SVN,无法进行提交或者备份文件。

分布式 分布式版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了团队协作,会把本地数据同步到GitLab服务器或者是GitHub等代码仓库。

二.Git使用方法:

1.git需要配置环境变量

2.配置用户名和邮箱

git config --global user.name "zx"

git config --global user.email ""

git config --list

 

 

 

3.手动新建文件夹,初始化仓库

  1. 手动建好文件夹(ag:文件夹名字是learnGit),在控制台进入到文件夹

  2. 进入到所在文件位置执行git init 命令,初始化

如果cmd退出,进入到文件所在位置就有之前的操作

 

上图是在d盘新建的文件夹

这个是在桌面

4.添加文件到暂存区

git add 文件名称 #确认需要添加以及跟踪的文件

5.文件上传到本地仓库

git commit -m "注释消息"

三.git的生命周期可以完整的描述为:

git init #生成git工作区

git status #掌握git工作区的信息

git add #确认需要添加以及跟踪的文件

git commit -m "注释信息"#提交到本地仓库

 

 

代码展示

四.Git 代码提交日志的记录查看

1.git 查看

  1. git log 查看全部

  2. git log --oneline 查看简约

  3. git log -1 查看最新

  4. git log --all --graph #查看提交的版本演变

  5. git reflog #记录git所有的操作,包含了提交以及回退

  6. type 文件名 可以查看文件内容

2.git回退

  1. git reset --hard 回退的版本Id

  2. git reflog 查看git所有操作

回退使用场景:

晚上上线,发现严重的问题,最后结论是本次发布取消,那么就需要版本回退(比如版本1.0测试无误,发布的是2.0)

测试:版本回退到1.0,核心功能做一轮回归测试确认无误

五.git标签

1.标签涉及到的命令:

  1. git tag -a tagName -m 标签注释:创建一个标签,并且加上注释

  2. git tag #查看标签信息

  3. git log --decorate #查看标签的详细信息

  4. git log --oneline --decorate #命令如上是一样的

  5. git tag -a标签名称 commitID -m 标签注释

  6. git show tagName #查看标签的具体详细的信息

六.git分支管理

(一)环境分类

1.1测试环境

1.2开发环境

测试和开发不能共用同一个环境,容易代码混乱。比如测试的是v1.0.0版本,开发使用的v1.0.1版本,一起用就分不清

1.3预发布环境:测试代码现在这里测试

1.4线上环境

都是生产环境,配置都一样,访问域名不一样,两者间的数据隔离。不同的数据要分离使用影子库隔离数据。

1.5沙盒环境 测试支付部分

(二)代码分支

1.分支环境

1.1test:测试环境
1.2dev:开发环境
1.3master:主干分支,专门发布到线上(预发布/生产环境)

2.创建分支

创建格式:git branch 分支名字

查看格式:git branch

切换分支:git checkout 另外的分支(文件内容不变)

合并分支:git merge 分支

3流程

  1. 开发在dev环境开发完的功能合并到Test分支

  2. 测试在test环境测试完成后,合并到master

  3. 最后master分支代码的上线

具体代码演示:

3.4问题

开发把test的代码合并到master(也是测试环境),测试还需要测试吗

需要,合并过程中可能会出现代码的冲突、丢失