一、Git介绍
Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件,它采用了分布式版本库的方式, 不需要服务器端软件支持。可以说它是一个开源的分布式版本控制系统,用于敏捷高效地处理任何小或者大的项目。
Git 分布式版本控制系统 ,本地版本管理
github :公有云代码托管平台
gitlab:私有云代码托管平台
二、集中式&分布式
1、集中式
从中央代码服务器获取具体的代码,把代码下载到自己的本地,然后把代码,必须在有网络的情况下提交到中央服务器。典型的产品是SVN,所谓集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库瘫痪或者是不可访问的情况下,所有的使用者无法使用SVN,无法进行提交或者备份文件。
2、分布式
分布式版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了团队协作,会把本地数据同步到GitLab服务器或者是GitHub等代码仓库。
三、Git安装
在git的官网下载https://git-scm.com/,下载完成后,一路next即可。并将bin目录添加到path环境中。
在控制台里输入如下命令,说明Git安装成功。
四、Git配置
1、system
2、global
全局,只针对当前登录的用户生效,git配置写入~/.config/config
3、local
本地,只针对某⼀个文件夹生效。 ⼀般配置的时候,使用的是全局配置,建议使用全局配置的式方。在windows系统里具体配置name和email如下:
五、Git核心原理
操作的⼀般都是工作目录,如果执行了git add的命令后,那么就会从工作区进入到暂存区,如果再执行了git commit的命令后,等于是从暂存区进⼊到本地仓库,如果再执行git push,就是从本地仓库进⼊到原地仓库。本地仓库主要记录的是所有文件的修改,删除,这些Git都会记录下来,目的是可以进行历史回退,追踪信息。
1、创建Git工作目录
首先在windows里新建一个名为“learnGit”的文件,此时在控制台里输入创建仓库的命令:git init
此时会出现:.log
从而生成git工作区。
2、创建Git暂存区域
此时在名为“learnGit”的文件下,创建一个名为“index.txt"的文件,文件里假设写入如下内容:
此时在文件在控制台输入如下命令:
可以看到暂存成功,当然在暂存区域的文件也是可以进行撤销,一旦提交到本地仓库,会很难撤销。
3、提交本地仓库
使用命令:git commit -m "注释信息"
六、Git生命周期
总结上述的各个区域,它的生命周期可以完整的描述为:
git init →生成git工作区
git status →掌握gitt工作区的信息
git commit -m "注释信息"→提交到本地仓库
七、Git日志
查看Git的日志信息,主要使用到的命令具体汇总如下:
• git log --oneline →查看简陋的信息
• git log →查看所有的日志信息
• git log -1 →显示最新的一条提交记录信息
• git log --all --graph →查看提交的版本演变
• git reflog → 记录git所有的操作,包含了提交以及回退
八、Git回退
git的版本管理是通过指针来进行管理的,这个指针就是HEAD,那么也就是说HEAD表示当前版本, HEAD^表示的是上⼀个版本,HEAD^^表的是上上个版本。
Git回退使用的命令为:
git reset --hard 版本ID
git reset --hard HEAD管理
备注:结合git reflog,可以回到过去,也是可以到未来的版本信息。
假设在名为“learnGit”的文件下,创建一个名为“login.txt"的文件,文件里假设写入如下内容:
此时,通过上述的命令输入即可:
九、Git标签
标签涉及到的命令具体可以总结为:
• git tag -a tagName -m "标签注释":创建一个标签,并且加上注释
• git tag -a 标签名称 commitID -m "标签注释"→新增标签
• git tag →查看标签信息
• git log --decorate →查看标签的详细信息
• git log --oneline --decorate →命令如上是一样的
• git show tagName →查看标签的具体详细的信息
如下图所示:
其中:diff是查看两个文件的差异
在windows里可以看到,再index.txt的文件里新增了"Handoop"和"Spark"
其实,在linux里会更加的直观化
十、Git分⽀管理
1、前言:
1-1、环境:测试环境、开发环境、预发布环境、线上/生产环境
其中:预发布环境:将测试环境(测试环境+开发环境)在还没有上线之前,先在该环境里运行一下,将问题提早暴露出来,防患于未然。
测试环境和开发环境是不一样,因为设计出的内容会涉及到不同的版本等问题,会出现混乱。
1-2、代码分支:test :测试环境、dev:开发环境、master:主干分支,专门发布到线上(预发布/生产环境)
1-3、流程:a、程序员在dev开发完的功能合并到test分支;
b、测试这边在test测试完成后,合并到master;
c、最后master 分支代码的上线。
需要: 1、合并过程中可能会出现代码的丢失 2、合并过程中会出现代码的冲突
2、创建分支:
master是主干分支,⼀般我们的分支可以分为test dev stage的分支。
创建分支涉及到的命令具体有:
git branch →查看当前的分支状况
git branch 分支名称→新建分支
3、切换分支
切换分支涉及到的命令具体有:
git checkout 分支名称 →切换分支
git merge 分支名称→分⽀的合并信息,
如下就是显示的是把test的分⽀代码合并到master的分支:
以上述的流程为例:dev →test →master
dev转test:
test转master