Git
Git是Linux Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,它采用了分布式版本库的方式,不必服务器端软件支持。可以说它是一个开源的分布式版本控制系统,用于敏捷高效地处理任何小或者大的项目。
集中式和分布式
集中式
从中央代码服务器获取具体的代码,把代码下载到自己的本地,然后把代码,必须在有网络的情况下提交到中央服务器。典型的产品是SVN,所谓集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库瘫痪或者是不可访问的情况下,所有的使用者无法使用SVN,无法进行提交或者备份文件。
分布式
分布式版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了团队协作,会把本地数据同步到GitLab服务器或者是GitHub等代码仓库。
Git安装
Git官网:https://git-scm.com/
1、安装包放在E盘中,一直点击下一步安装,将bin地址添加到Path环境变量中即可。
2、验证是否安装正确:在cmd控制台中输入git version。
3、配置身份
使用之前我们首先需要配置身份(账户、email)
- git config --global user.name "名字"
- git config --global user.email "邮箱地址"
4、验证配置是否成功
git config --list
5、Git核心原理
操作的⼀般都是⼯作⽬录,如果执⾏了git add的命令后,那么就会从⼯作区进⼊到暂存区,如果再执⾏了gitcommit的命令后,等于是从暂存区进⼊到本地仓库,如果再执⾏git push,就是从本地仓库进⼊到原地仓库。本地仓库主要记录的是所有⽂件的修改,删除,这些Git都会记录下来,⽬的是可以进⾏历史回退,追踪信息。
Git使用
- 本地已有代码,需要使⽤git来进⾏管理
- 本地没有代码,需要创建⼀个新的git版本仓库
- 本地没有代码,也没有仓库,去GitLab平台下载⼀个git版本代码仓库.使⽤到的命令为:git clone
1、在本地创建文件夹(此处是在桌面上创建的)
2、在文件夹里创建仓库
在这个文件夹里面创建仓库(存储代码的目录),最后会把仓库里面的代码提交到私有云(公有云)的平台。
打开cmd的控制台,进入到learnGit的目录
创建仓库的命令为:git init
Git命令
git本地仓库,就是⼀个git的版本库,也就是说在代码⽬录下的⼀个.git的⽂件夹,这就是管理⽂件信息的⽬录,也是git核⼼的本地仓库。github是共有代码托管平台,⽽Gitlab是私有代码托管平台。
A、本地有代码进⾏管理
直接到这个⽬录,执⾏git init就可以创建本地仓库了,那么后⾯的所有代码修改,都会记录相关的信息。
B、需要新创建本地仓库
git init来创建新的仓库信息。具体创建的过程如下:
1、在此目录下建index.txt记事本(这个记事本相当于我们工作中的文档和代码)
2、添加文件
git add 文件名称
添加不代表成功,只是放在了暂存区,还需要提交文件到仓库
3、提交文件到仓库
git commit -m "备注"
双引号里面必须填写备注,备注告诉大家这是在干什么
3、查看仓库状态:
4、Git生命周期
它的⽣命周期可以完整的描述为:
- git init #⽣成git⼯作区
- git status #掌握git⼯作区的信息
- git add #确认需要添加以及跟踪的⽂件
- git commit -m "注释信息"#提交到本地仓库
5、查看Git的log(日志)
- git log --oneline #查看简陋的信息
- git log
- git log -1 #显示最新的⼀条提交记录信息
- git log --all --graph #查看提交的版本演变
- git reflog #记录git所有的操作,包含了提交以及回退
6、Git回退
git的版本管理是通过指针来进⾏管理的,这个指针就是HEAD,那么也就是说HEAD表示当前版本,
- HEAD^表示的是上⼀个版本
- HEAD^^表的是上上个版本。
- git reset --hard 版本ID
- git reset --hard HEAD管理
使用版本回退场景:
晚上上线,发现严重的问题,最后结论是本次发布取消,那么就需要版本回退,此时测试需要完成回归测试。
备注:结合git reflog,可以回到过去,也是可以到未来的版本信息,也就是回退了,也是可以还原回去的,但是每次在本地修改文件后都要添加和提交文件。
6、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分⽀管理
master是主⼲分⽀,⼀般我们的分⽀可以分为test dev stage的分⽀。分⽀涉及的命令具体如下
- 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分支代码的上线
问题:测试完成后开发合并代码到master后,测试还需要测试吗?
需要测试,在合并过程中可能会出现代码的丢失或者代码的冲突。