Git的概述

Git 分布式版本控制系统 本地版本管理 github :公有云代码托管平台 gitlab:私有云代码托管平台。

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

集中式&分布式

集中式

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

分布式

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

Git安装

需要到https://git-scm.com/downloads进⾏下载,根据具体的操作系统来下载具体的安装包。安装完成后在控制台输入如下命令,显示版本信息则表示安装成功。

Git配置

查看显示全局的配置信息:

git config --global --list

Git的核心原理

操作的⼀般都是⼯作⽬录,如果执⾏了git add的命令后,那么就会从⼯作区进⼊到暂存区,如果再执⾏了git commit的命令后,等于是从暂存区进⼊到本地仓库,如果再执⾏git push,就是从本地仓库进⼊到远程仓库。本地仓库主要记录的是所有⽂件的修改,删除,这些Git都会记录下来,⽬的是可以进⾏历史回退,追踪信息。

Git的生命周期

1、桌面创建learnGit的文件夹,并新建一个index.txt 的文件,编写内容如下:

2、初始化仓库(创建仓库)

控制台进入到learnGit目录下,然后输入git init,创建仓库。

3、确认需要添加以及跟踪的文件到暂存区域

 4、提交文件到本地仓库

 它的生命周期可以完整的描述为:

• git init #生成git工作区

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

• git add #确认需要添加以及跟踪的文件(到暂存区)

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

Git的log

查看Git的日志信息,主要使用到的命令具体汇总如下:

• git log --oneline #查看简陋的信息

• git log #查看所有的信息

• git log -1 #显示最新的一条提交记录信息

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

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

 

Git的回退

git的版本管理是通过指针来进⾏管理的,这个指针就是HEAD,那么也就是说HEAD表示当前版本,HEAD^表示的是上⼀个版本,HEAD^^表的是上上个版本。

git reset --hard 版本ID

git reset --hard HEAD管理

场景引入: 晚上上线,发现严重的问题,最后结论是本次发布取消,那么就需要版本回退,之后再进行回归测试,直到问题解决,没问题了才算结束。

 

 

Git标签

git tag可以理解为:这对每个版本加上一个标签。标签涉及到的命令具体可以总结为:

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

• git tag #查看标签信息

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

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

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

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

• git diff  标签1 标签2 #查看两个不同标签的文件内容差异

 

Git的branch

master是主⼲分⽀,⼀般我们的分⽀可以分为test dev master的分⽀。分⽀涉及的命令具体如下:

git branch #查看当前的分⽀

git branch test #创建⼀个测试分⽀

git checkout test #切换分⽀

git checkout -b 分⽀名称#创建新的分⽀并且⽴即切换到新的分⽀信息

git branch -D 分⽀名称

git merge 分⽀名称#分⽀的合并信息,如下就是显示的是把test的分⽀代码合并到master的分⽀

代码分支: test :测试环境

     dev:开发环境

        master:主干分支,专门发布到线上(预发布/生产环境)

流程: 1、程序员在dev开发完的功能合并到test分支

            2、测试这边在test测试完成后,合并到master

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

创建分支

 

Git的冲突

解决冲突,并把master合并到test分支

 

Git Stash

git stash可以称为临时空间。它的使用场景主要可以总结为:git stash就是把暂存区未提交的内容,临时存放到一个区域,方便日后取回来再次使用。

场景可以描述为:修改一个文件后,进行了git add fileName文件,但是不进行具体的commit,这个时候可能需要干其他的事,比如需要修复线上的紧急bug,那么就需要把这个临时的存放到一个区域。

 git stash list 查看stash区域的⽂件信息

 git stash pop #恢复最新的stash进度到⼯作区

GitLab

1、下载GitLab,下载网址为:http://47.95.142.233/wuya/study.git

2、注册登录账户后,新建一个project

 3、git clone #把远程的仓库克隆到本地

 4、git pull :从远程的仓库获取代码到本地

git push:把本地的代码提交到远程的仓库

把本地的代码提交到远程的仓库时先git pull(更新一下)

通过生成密钥的命令生成密钥

 在用户设置中添加密钥

然后在本地仓库中新建一个文件,添加内容后,将本地仓库的文件上传到远程仓库,显示如下:

 

 在GitLab中可查看到提交的文件记录,显示如下:

相关面试题:

1、开发把代码合并到master 分支还需要测试吗?

需要:1、合并过程中可能会出现代码的丢失

           2、合并过程中会出现代码的冲突。

2、开发和测试可以共用一套环境吗?

不可以,容易造成代码混乱,产生问题。

3、预发布环境和线上环境的相同与差异:

数据隔离、域名不同、代码和配置相同

4、如何实现数据的隔离?

使用影子库或者沙盒环境。

5、为什么需要预发布环境?

在产品正式上线前,先在预发布环境测试,再进入线上环境,为了尽可能减少问题的产生。