1.1.Git概要:
a.分布式与集中式版本管理的比较:
b.Git简介(Git官网)
- 1.Git 是一个免费的、开源的
分布式版本控制系统
- 2.分布式的版本控制系统出现之后,解决了
集中式(SVN)版本
控制系统的缺陷: - 3.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 4.每个客户端保存的也都是
整个完整的项目
(包含历史记录,更加安全 - 5.Git 易于学习,占地面积小,性能极快。 它具有廉
价的本地库
(存储在本地磁盘中)
,方便的暂存区域和多个工作流分支等特性
c.Git发展历史
d.Git的安装与工作机制
- 工作区:本地磁盘存放代码的地方
- 暂存区:临时存储代码,工作区的代码提交到暂存区,对代码进行临时存储
- 本地库:暂存区的代码提交后,提交到本地库,可以存放代码的历史版本
- 远程库:把本地库的代码推送到远程库
e.Git 和代码托管中心
- 代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
- 局域网 :
GitLab
- 互联网 :GitHub(外网);Gitee 码云(国内网站)
1.2.Git 安装
a.安装流程
- 1.官网地址 查看 GNU 协议,可以直接点击下一步:
- 2.Git配置选项如下:
- 3.选择后台客户端连接协议,选默认值 OpenSSL,然后下一步。
- 4.Git换行符号
- 5. 选择终端类型
- 6.选择跨平台凭据管理器,避免每次都要登录
1.3.Git命令
- 1.操作Git的常用命令
a.操作Git第一步:设置全局的用户签名
- 1.设置用户名:
- 格式:git config --global user.name 用户名
- 命令:
git config --global user.name root
- 2.设置邮箱:
- 格式:git config --global user.email 邮箱
- 命令:
git config --global user.email 1033586391@qq.com
- 3.签名的作用是
区分不同操作者身份
。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。 - 4.Git首次安装必须设置一下用户签名,否则无法提交代码。
- 5.这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账
号没有任何关系
。只不过是用来区分不同的操作者而已
b.操作Git第二步:初始化本地库:
- 1.先本地新建文件夹,名字叫:git-demo
- 2.选择:
Git Bash here
:
- 3.初始化本地库 :
git init
,然后可以用ll -a
这个命令查看隐藏文件
- 4.查看本地库的状态:
git status
c.操作Git第三步:在本地库新增文件
- 1.新增文件:
vim hello.txt
:新增hello.txt文件cat hello.txt
:查看hello.txt文件内容
- 2.再次查看本地库文件状态-
git status
d.操作Git第四步:提交本地文件到暂存区
- 1.将本地的文件提交到暂存区,以便追踪文件
git add 文件名
将这个名字的文件提交到暂存区- 这里的命令是:
git add hello.txt
- 在Linux中,光标放在 开头,点
yy
,表示复制该行,然后点p
就是复制
- 2.提交后查看文件状态
git status
会发现这个文件的状态名由红色变成了绿色。说明追踪到了这个文件。git rm --cached 文件名字
:删除暂存区中的这个文件- 如命令:
git rm --cached hello.txt
删除hello.txt这个文件,但是在工作区的文件还是存在的,只是在暂存区的这个文件删除了
e.操作Git第五步:将暂存区的文件提交到本地库
- 1.提交本地库的命令:
git commit -m "日志信息" 文件名
- 如命令:
git commit -m "第一次提交" hello.txt
- 2.查看文件版本的信息:
git reflog
- 3.查看文件版本的详细信息:
git log
f.操作Git第六步:版本的切换
- 1.在版本切换之前,可以使用
git reflog
都有哪些版本,也可以使用git log
来确认到底是谁提交的 - 2.版本更换,回滚到某个版本:
git reset --hard 版本号
- 2.在工作区看当前的版本号:
- 3.版本控制说明
- 无论这个文件提交了多少个版本,在工作区也只是存在一个文件,而不是以多个文件在工作区中存在;这个是因为git版本控制的
底层原理不是以副本形式来控制版本,而是以指针的形式的形式来进行版本控制。
- 无论这个文件提交了多少个版本,在工作区也只是存在一个文件,而不是以多个文件在工作区中存在;这个是因为git版本控制的
- 当我们再提交后,指针会
指向最新的版本
1.4.Git分支操作:
- Git操作主要是指的:
Git分支
分支特性
分支创建
分支转换
分支合并
代码合并且冲突解决
a.现在的场景:
b.什么是分支
- 1.在版本控制过程中,当我们需要同时推进多个任务的时候,为每个任务,我们就可以
为每个任务创建的单独分支
。 - 2.分支创建后,这样就可以使开发人员可把自己的工作任务
从开发主线上分离开来
,在自己的分支上进行开发,这样也不会影响主线分支的运行。其实分支底层也是指针的引用
c.分支的好处
- 1.同时并行推进多个功能开发,提高开发效率。
- 2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
d.分支常用操作:
e.分支上常用的命令
- 1.查看分支号:
git branch -v
- 2.创建分支:
git brance 分支名
;如命令:git branch hot-fix
,创建hot-fix分支;
- 4.切换分支:
git checkout 分支名
- 5.实际操作分支切换
f.合并分支(无冲突情况):
f1.把指定的分支合并到当主分支
上(无冲突情况):
- 1.先切换到master分支上,然后在master分支上,把hot-fix分支合并过来:
git merge 分支名
f2.合并分支(有冲突情况):
- 1.在不同的分支上可能会更改同一个文件,每个人改的都不一样。那么在何合并的时候,就会
发生冲突
,所以需要手动人为
的来进行合并。
- 2.编辑有冲突的文件:
vim hello.txt
,删除特殊符号,决定要使用的内容
( 特殊符号代表的意义)
<<<<<<< HEAD
:当前分支的代码
=======
: 合并过来的代码
这个(>)代表:>>>>>>> hot-fix
- 3.手动合并后,查看状态发现是未提交的状态,所以手动合并后把提交代码到暂存区,然后再提交到本地库,
提交到本地库的时候,命令中不再需要带文件名了
,命令是:git -m "注释"
- 4.合并后的文件也
只是修改master分支上
了,对于hot-fix文件上的内容没有影响,
f.分支切换的原理-图像解析
- 1.
master、hot-fix
其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD决定的。所以创建分支的本质就是多创建一个指针。
- HEAD 如果指向 master,那么我们现在就在 master 分支上。
- HEAD 如果执行 hotfix,那么我们现在就在 hot-fix 分支上。
1.5.Git的团队协作开发
- 1.团队内部协作情况1
- 2.跨团队协作情况2