GIT
学习目标
1.能说出GIT的工作流程
2.使用GIT完成常用操作【本地操作、运程操作、协作】
git菜鸟网站
https://www.runoob.com/git/git-tutorial.html
gitlab服务器地址: http://47.96.143.141:9999/ http://git.eehp.cn/users/sign_in
00.GIT课程学习方法介绍
- 务必好好学习本门课程,操作熟练度决定了你是不是一个专业的编程人员
- GIT是一门特殊的课程,GIT是一个软件,不是一门技术,所以学习时,主要侧重于操作
- GIT包含的理论知识不多,所学习理论知识也是为了辅助操作
- GIT操作不可能一次性全部学完,后续还需要慢慢熟悉,提高熟练度
- GIT基础操作不要觉得简单就不练习,等多的时候混合在一起就复杂了
- 这门课程资料配图较多,如果你使用的Idea版本与老师不同,可能截图会对不上,所以看图的时候不要只看图,要看文字,万一界面不同,找对应的按钮即可
01.GIT概述
目标
- 说出GIT的作用以及特点
内容
-
Git是目前世界上最先进的分布式文件版本控制系统(没有之一)
-
版本控制 所谓的版本控制就是将一组文件的改动记录下来,形成版本历史,以便需要时恢复
-
GIT作用
-
代码共享
每位开发者可以使用Git将自己的代码上传到云服务器上,同时使用Git还可以将其他人上传的代码下载到自己的电脑上,这样就实现了代码共享
-
回溯版本
在开发的过程中其实还会遇到各种奇葩问题,比如自己心血来潮写了一段超级牛×的代码,本着闲着也是闲着的思想,在这段代码的基础上又进行了调优,但是优没调成,代码还给整的不能用了。鉴于马上要要交活了,这个时候就打算放弃,但是你发现原来能用的代码已经被改的面目全非,不能用了,那这就太让人崩溃了。这个时候就幻想着如果这两小时什么事情都没有发生该多好,如果能时间倒流该多好。Git告诉你,这事我能做。Git除了可以帮我们保存代码,还可以保存每次上传的痕迹,每上传一次就做一次备份,上传3次就备份3次,每次备份就相当于一个版本,任意时间可以通过Git查询曾经提交过的每一个版本对应的内容,这样就可以随时恢复到之前任意上传时间对应的状态了
-
追踪信息
使用Git的过程中大部分时间是管理自己写的东西,但是也会存在一些情况需要你去改别人的代码或者几个人编辑同一个文件。此时同一个文件,你改改,我改改,最后算谁的啊?出了问题你追责都没的追,怎么解决这个问题呢?Git提供了强制记录日志的功能,每次上传信息要求书写日志,可以记录本次上传的相关信息。比如写清楚本次上传的内容啊,对应的说明啊,等等。关于日志的内容书写格式并不是规范类的东西,只能算是一个约定,因此每个公司对开发者提交日志都有自己的要求,上传时写什么东西,这样出了问题就可以进行信息追踪了
-
小结
-
什么是git,它的作用是什么
1)Git 是一个开源的分布式版本控制系统
2)作用:
1.代码共享
2.信息追踪
3.版本回溯
-
GIT与SVN的区别【面试题,不用理解,概念性记忆】
- Git 是分布式的,SVN 不是
- Git 把内容按元数据(修饰数据的数据)方式存储,而 SVN 是按文件
- Git 分支和 SVN 的分支不同
- Git 没有一个全局的版本号,而 SVN 有
- Git 的内容完整性要优于 SVN
02.GIT相关概念(掌握)
目标
可以画图说明GIT中工作区【Workspace】、暂存区【Index Stage】、版本库、运程仓库【Remote】的作用
内容
git没有中央版本库,但是为了方便开发小组的成员们进行代码共享,我们通常会搭建一个远程的git仓库。和svn不同的是开发者本地也包含一个完成的git仓库,从某种程度上来说本地的仓库和远程的仓库在身份上是等价的,没有主从。
# 1.工作区:就是你平时存放项目代码的地方。
位置:一个文件夹通过git init 设置成一个git可以管理的文件夹时,这个文件夹里的内容(除去.git文件夹)就是工作区。
# 2.仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。就是工作区有一个隐藏目录 .git,它不算工作区,而是 Git 的版本库
# 3.暂存区:英文叫 stage 或 index。是用来暂时存放工作区中修改的内容,可以理解为一个中转站。
1)位置:一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
2)只是一个文件
3)包含在版本库中
4)为什么需要暂存区:
1.如果没有暂存区,如果想要提交文件就需要一个个修改然后,提交,比较麻烦,但是有了暂存区就可以一次性将所需要的文件从暂存区 直接修改后提交。
2.如果没有暂存区,你修改的文件只可以立刻保存到版本库中,但是这样很容易对别人的工作造成影响
# 4.Head :指向最新放入仓库的版本
# 5.master:是我们的主分支。当我们git init后,并不会立刻产生分支。而是我们添加了一个文件,并git add,git commit后这时我们查看分支情况便可以看到master分支了。是本地仓库一部分。
# 6.objects:是git对象库,是用来存储各种创建的对象以及内容.
# 7.远程仓库:托管代码的服务器,常用github。gitee(码云)。gitlab
小结
-
什么是工作区
就是我们自己创建的目录,放置 我们要管理的文件
-
什么是暂存区
在将工作区内容加入到本地仓库,在加入到本地仓库前,是先放置在暂存区的
03.GIT下载与安装
目标
GIT安装完成,并测试成功
内容
下载地址:https://git-scm.com/download
或者直接使用资料中安装文件:Git-2.15.0-64-bit.exe
安装过程非常简单,各种下一步,各种Next,点点点就完事了
双击直接安装【版本为64位系统的】
点击Next
点击Next
点击Next
点击Next
点击Next
后面步骤直接都是Next
点击Finish完成安装,验证安装,找一个桌面空白处,右键出现下列窗口
点击后,出现Git的控制台,在控制台输入git,可以看到相关的帮助信息
04.GIT本地操作-初始化工作区
目标
说出 git init、git status作用
内容
-
初始化工作区
-
工作区 就是你在电脑里能看到的目录。比如我们刚刚创建的learn-Git目录,在最初使用的时候,我们需要初始化当前的文件夹为工作区
-
如何初始化工作区
命令:git init 初始化
在要被初始化工作区的目录右键,选择Git Bash Here
在文件夹中机会出现一个隐藏文件.git如图
当我们在learn-Git文件夹中添加文件的时候,那么这个文件就会被Git所管理
-
-
查看状态
我们在learn-git目录中创建一个readme.txt文件,并使用vim命令进入编辑模式添加内容:第一行代码。可以通过命令来查看它的状态
命令:git status 查看状态
红色代表当前没有提交到缓存区
小结
-
如何初始化工作区
git init 初始化成功的标志是有一个.git的隐藏目录
-
如何查看文件状态
git status
-
进入文件编辑模式 linux系统
vim 文件名然后 按 字母 i(前) a(后) o(下一行)插入数据然后按esc退出====最后按 :wq保存退出。
- 查看文件内容:cat 文件名 linux系统
05.GIT本地操作-add与commit
目标
可以使用 git add将文件添加到暂存区,使用git commit 提交到本地仓库
内容
-
工作区提交缓存区
在git控制台中使用 命令
命令:git add readme.txt
这是完成了将文件由工作区提交暂存区
我们通过git status来查看状态
发现这时文件变成绿色,可以提交到本地仓库
-
缓存区提交本地仓库
命令:git commit -m '第一次提交' 说明:-m 后面跟随的是为你提交的备注,m是单词message信息的首字母 提交信息格式:增删改查第几次提交
注意:如果第一次提交需要填写如下内容:
命令:git config --global user.email '[email protected]' 说明:指定邮箱 命令:git config --global user.name 'suoge' 说明:指定操作者
小结
-
说一下git add的作用
将工作区的文件添加到暂存区
-
说一下 git commit的作用
将文件从暂存区提交到本地仓库 git commit -m ‘信息’
-
扩展:
添加多个文件 git add [file1] [file2] ... 添加指定目录到暂存区,包括子目录 git add [dir] 添加当前目录下的所有文件到暂存区,不包括被删除的文件 git add . 重要 add 时,一个个文件加比较麻烦,可以用下面的命令将所有变动的文件同步至暂存区(新增、修改、删除) git add -A 下面的命令是将所有修改和删除的文件同步至暂存区,不包括新增文件 git add -u
06.GIT本地操作-差异比较
目标
使用 git diff来比较暂存区、本地库与工作区的内容
内容
使用vim命令,对readme.txt文件进行编辑,添加我是第二行代码,使用:wq退出
- 工作区暂存区比较
命令:git diff readme.txt
-
工作区本地库比较
命令:git diff HEAD readme.txt
-
暂存区本地库比较
命令:git diff --cached readme.txt
这里缓存区和本地库没有不同所以没有内容
-
补充:可以第二次提交到暂存区和本地仓库
小结
-
工作区与暂存区如何比较
git diff 文件名
-
工作区与本地库如何比较
git diff HEAD 文件名
-
暂存区与本地库如何比较
git diff --cached 文件名
07.GIT本地操作-版本回退
目标
掌握 git log、git reflog、git reset 作用
内容
当我们从暂存区提交到本地仓库时,发现当前的提交的版本有问题,希望回退到指定版本如何操作呢?
使用vim命令编辑readme.txt,添加“我是第三行代码”
命令:git add readme.txt 提交到暂存区
命令:git commit -m '第三次提交' 提交到本地仓库
我们可以通过git提供的查看日志命令来查看提交的日志
命令:git log 查看当前提交日志
可以发现,目前为止,我们已经在本地仓库中提交了3次,也就是说有3个不同版本。其中,最近的这个版本有一个标示:HEAD-> master 这就是标记当前分支的当前版本所在位置,如果没有显示当前所在位置可以使用下面命令查看:
命令:git log --decorate 查看当前提交日志,且显示当前分支的当前版本所在位置
在log中,每一个版本的前面,都有一长串随即数字: b44a10787c2b2bcc7ceb9c39cf06309065518d4b ,这是每次提交的commit id ,这是通过SHA1算法得到的值,Git通过这个唯一的id来区分每次提交
-
回退到之前版本
命令:git reset --hard HEAD^ 回归到上一个版本,Git通过HEAD来判断当前所在的版本位置。那么上一个版本,就用HEAD^标示,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
这时我们可以在查看一下日志 git log
发现只有两个版本,我们在查看一下文件内容
-
回退到指定版本
首先使用
命令: git reflog 查看所有操作
找到之后可以使用如下命令进行回退到指定版本
命令:git reset --hard 版本号 回退到指定版本
我们回到第三次提交,这时我们在查看文件
小结
-
如何查看当前日志
git log 只能看到当前操作
-
如何查看所有操作日志
git reflog 查看所有操作日志
-
如何回退到上一个版本
git reset --hard head^
-
如何回退到指定版本
git reset --hard 版本号
08.GIT本地操作-修改撤消
目标
掌握 git checkout、git reset head作用
内容
当我们工作区内容想要提交到缓存区时【add】,突然发现有问题,想要撤销该如何处理?
当我们已提交到缓存区的内容,发现出现了bug,这时又应该如何处理哪?
以上操作我们可以使用GIT提供的撤销命令来完成
-
工作区撤销修改
编辑readme.txt添加“我是第四行”
在你提交缓存区前,你突然发现这个修改是有问题的,你打算恢复到原来的样子。怎么办?
使用git status 命令查看当前状态
命令:git checkout 文件名称 撤销工作区修改
我们撤销后,在查看文件中内容,发现工作区内容已经撤销,并查看状态,发现状态很干净
-
暂存区撤销修改
使用 vim 命令 编辑readme.txt添加“我是第五行”
使用git add提交文件至暂存区
撤销到工作区
命令:git reset HEAD readme.txt 撤销到工作区
工作区撤销 git checkout readme.txt
我们在查看文件,发现已经恢复到最初始样子
小结
-
如何实现工作区撤销修改
git checkout 文件名
-
如何撤销缓存区内容
git reset HEAD 文件名
09.GIT本地操作-总结
- 初始化工作区 git init
- 查看状态 git status
- 提交
- 工作区提交暂存区 git add 文件
- 暂存区提交本地库 git commit -m ‘提交信息’
- 差异比较
- 工作区缓存区比较 git diff 文件名
- 工作区本地库比较 git diff HEAD 文件名
- 缓存区与本地库比较 git diff --cached 文件名
- 版本回退
- 查看日志 git log
- 回退到上一个版本 git reset --hard head^
- 查看所有操作日志 git reflog
- 回退到指定版本 git reset --hard 版本号
- 修改撤消
- 工作区撤消 git checkout 文件名
- 撤消缓存区(从缓存区撤销到工作区) git reset head 文件名
10.分支操作-分支介绍(掌握)
目标
能说分支作用
内容
我们现在使用Git可以简单理解为阶段性的使用Git保存一下自己写的代码,每次提交形成一个版本信息。但是你能想象出当一个团队所有人提交的版本信息汇集到一起后是什么样子吗?那版本的数量是数以千计的。尽管Git提供了一系列的操作帮助我们完成版本的操作,但是最终架不住版本太多看着乱啊。
比如说张三是一个成熟的开发者,他做完一个模块提交一个版本,李四是一个入行一年的开发者,他做完一个功能提交一个版本,这都是可以接受的,你要碰到王五这种刚刚入行的,他恨不得一个文件提交一个版本,甚至写一个方法就提交一个版本,那Git中管理的版本真的就要数以万计了。
其实理想的情况应该是这样的,张三开发功能A,在A没有完全制作完成之前不要提交版本,等做完了再一次性提交所有的文件。这样每一个版本都是具有非常高的价值的,不会出现大量无效的提交。什么叫无效提交?你一个模块8个类配合在一起工作,你写完一个类提交一个版本,回头不管是回滚也好,对版本进行管理也好,单独一个类自己不能构成一个完整的开发状态,你回滚到这个版本你发现不能用,再换一个还是缺文件,这就让人很崩溃了。
但是作为开发者来说,我打版本也是为了自己用的方便,我写点备份一点,看上去也很合理。这个时候就提出了一个新的需求,能不能我自己提交自己专用的版本,而不要和项目组的核心代码掺和在一起呢?这个功能必须有,这就是下面要说的分支。
那么在说分支前,我们说一下之前的提交到底是什么?
提交的本质:记录仓库中一组文件的变化信息(增、删、改)
分支是什么?
分支就是多次提交串起来的一条线
场景:问题背景:要开发一个新功能,又不想打扰目前分支(main)的功能开发,于是
可以看到 main 分支的开发并不会停止,可以继续进行 c4 这个功能的开发,而 new 分支可以开发新功能 c5,同样不会影响 main
等 new 分支的功能开发测试没有问题了,main 也想要 new 的代码怎么办?
可以使用 merge 命令将 new 分支的变动合并至 main 分支,此时的 c6 中既包含了 c4 以来的修改,也包括了 c5 的修改,这时如果觉得 c5 已经没用了,可以将它删除
我们分支讲解主要包含
- 创建分支
- 切换分支
- 合并分支
- 查看分支
- 删除分支
小结
- 根据自己的理解说一下分支是什么,它有什么作用
- 分支就是多次提交组成的一条线
- 作用:可以让我们在团队开发时更加方便
11.分支操作-分支创建与切换
目标
掌握分支创建与切换
内容
-
创建分支
分支创建示意图:
命令: git branch 分支名 创建dev分支 git branch dev 注意:分支名字随便书写,名字最好达到见名知意,张三---》zhangsan
-
分支切换
命令: git checkout dev 切换dev分支
编辑readme.txt,添加“我是dev提交的代码”
从工作区提交到缓存区执行:git add readme.txt
执行:从缓存区提交到本地区:git commit -m ‘dev分支提交’查看文件内容
切换到master分支,并查看文件内容
注意:如果没有将dev分支合并到主分支上,那么在主分支即master上面是无法查看到dev分支提交的内容
小结
-
如何创建分支
git branch 分支名称
-
如何切换分支
git checkout 分支名称
-
查看分支
git branch
12.分支操作-分支合并与删除
目标
掌握分支合并与删除
内容
上一个示例中,我们已经创建了dev分支,并在分支上添加了内容,如果想要将dev分支内容合并到master上如何操作
-
分支合并
命令: git merge 分支名 合并dev分支 git merge dev
注意:当前我们是在master分支
合并后,我们发现master分支上的readme.txt文件内容已经改变
-
分支删除
合并完分支之后,如果不再使用dev分支,则可以删除此分支,先查看当前分支:
命令 git branch 查看分支情况
当前有两个分支dev与master,我们当前是在master分支上,如何删除dev分支
命令 git branch -d 分支名
我们使用git branch查看,发现dev分支已经被删除
小结
- 创建分支
git branch 分支名
-
如何合并分支 (项目经理或者组长)
git merge 分支名
-
如何查看分支
git branch
-
如何删除分支
git branch -d 分支名
13.GIT远程仓库介绍与码云仓库注册创建
目标
能说出常用的GIT远程仓库,并完成码云仓库的注册创建
内容
本地仓库实际上是存储在个人电脑中的,用于存储个人提交记录与提交日志,说简单点,你现在commit提交的内容都在本地
远程仓库是公网或外网中的一个仓库,主要用于存储个人或团队的提交记录与提交日志,团队合作开发也是靠远程仓库实现的。大家都把东西提交到同一个远程仓库里面就OK了,这样每个人都可以获取到团队内开发的所有内容了。目前市面上常用的git支持的远程仓库有如下三个
常用的远程仓库
- GitHub(https://github.com)
- gitee(https://gitee.com)
- gitlab(https://about.gitlab.com)
GitHub是一个面向开源及私有软件项目的托管平台,说白了就是给开发者提供了一个远程仓库。当然人家提供的功能还是很强大的,2018年微软以75亿美金收购了GitHub。现在的GitHub除了承载了代码托管平台的功能,更大的功能是组建了一个同性交流平台,大量的码农在上面做技术及非技术的交流,活跃用户还是很多的,可惜这个主站在国外,速度一般。
gitee和GitHub是一样的东西,是开源中国(OSChina)推出的基于Git的代码托管平台,又叫码云。有什么特点呢?有,还很硬的特点,主站在中国,是否秒懂?速度快啊,中国码农的数量那不是一般的多。
GitHub和gitee都是开源的代码托管平台,这里就有一个BUG了,如果我现在做的项目涉密性很强怎么办?放公网上?不现实啊,你再提供高等级的安全服务我也不敢放啊,自己搭一个把,gitlab就有了。gitlab基于git作为版本控制工具的基础上,可以为你搭建一个Web服务器,你就可以理解为自己搭建了一个局域网内能够访问的服务器。啥用?私服啊,代码安全啊,别人访问不到啊,就这个用。
那我们如果玩远程仓库玩哪个?百分之百玩gitee和gitlab啊,速度快,又免费,多好。gitlab还安全。
-
注册登录
访问地址:https://gitee.com/
请自主完成注册与登录
-
创建仓库
填写项目相关的信息
仓库创建完毕,可以看到,如果我们要与远程仓库同步,这里支持多种通信协议,当我们选中一种协议后,后面会出现对应的远程仓库地址。
小结
-
git常用的远程仓库有哪些
github gitee gitlab
14.GIT远程仓库操作-关联、拉取、推送、克隆(不用刻意记住命令)
目标
完成远程仓库的关联、拉取、推送、克隆操作
内容
-
关联
现在readme.txt已经推送到我们自己的本地仓库,在推送到码云仓库前,我们需要先建立本地仓库与远程仓库的关系
命令:git remote add origin 远程仓库地址 关联远程仓库
-
拉取:从码云仓库拉取到本地仓库
【注意】在推送代码前必须先拉取代码,否则无法推送本地仓库代码到码云仓库
命令:git pull origin master --allow-unrelated-histories 首次拉取需要添加:--allow-unrelated-histories 命令:git pull 后续拉取
-
推送:本地仓库推送到码云仓库
命令: git push -u origin master 首次推送 命令: git push 后续推送
码云仓库有推送的信息
-
克隆
如果我们新加入一个团队,这个时候就需要我们把代码从远程仓库克隆过来,那么咱们操作呢?
新建文件夹learn-Git-B,新建的文件中右键
点击 Git bash Here
命令: git clone 远程仓库
这时候就拉取出远程仓库的内容
小结
1.常见命令
关联远程仓库命令:git remote add origin 远程仓库地址
举例:git remote add origin https://gitee.com/tiansuo123456/itheim-heima141.git
拉取命令:git pull origin master --allow-unrelated-histories 从码云服务器拉取到本地
首次拉取需要添加:--allow-unrelated-histories
命令:git pull 后续拉取
推送命令: git push -u origin master 首次推送 从本地推送到码云
命令: git push 后续推送
克隆命令: git clone 远程仓库 从码云服务器拉取到本地
举例:
git clone https://gitee.com/tiansuo123456/itheim-heima141.git
2.git clone(克隆) 与 git pull(拉取) 区别
#1.相同点:都是从远程服务器拉取代码到本地
#2.不同点:
git clone(克隆) :是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。
git pull(拉取) :在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。
3.将代码从本地仓库推送到码云仓库,每次都需要输入码云仓库的用户名和密码,这样很麻烦,我们可以参考资料中的以下文件:
15.IDEA中使用GIT-集成GIT
目标
在IDEA中集成GIT,初始化工作区及设置忽略文件
内容
-
集成
在idea中的file菜单中选中settings
弹出settings后在搜索中输入"git",选择Git,指定你的安装的git.exe目录
校验git是否集成完成,点击test,弹出校验窗口,点击git Executed successed 成功则表示集成完成
-
创建工程
创建一个普通的java工程git-project项目,结构如下:
-
基本操作-初始化工作区
点击VCS --> Create Git Repository
选择管理的文件夹,这里我现在的为gitProject文件夹
点击左下角,Git菜单,此时day0901_git下所有的文件都变成棕色,说明我们的工作区添加完成了
-
忽略文件类型
从version control中我们可以看到有一部分文件,我们是不需要提交到本地仓库中去的
那我们怎么做呢?可以拷贝"资料"中.gitignore文件,到gitProject的根目录:
这个时候你会发现,多余的不需要提交的文件类型被忽略了。如果有新的要忽视的文件类型,你可以在.gitignore中添加
小结
-
IDEA集成GIT时要指定哪个文件
git.exe
-
忽略文件有什么作用
让git只针对于我们项目主要文件进行维护
16.IDEA中使用GIT-基本操作-add与commit 掌握
目标
在IDEA中实现工作区提交缓存区与缓存区提交本地仓库操作
内容
-
工作区提交暂存区 add
选中gitProject项目,右键
可以看到Git中的文件颜色由棕色变成的绿色
-
暂存区提交本地仓库 commit
点击右下角Version control面板中,选中你要提交的文件,这里我都需要提交,使用全部选中
点击鼠标右键
选中commit:
点击Commit
再次确定,点击Commit
17.IDEA中使用GIT-基本操作-差异化比较
目标
在IDEA中完成差异化比较
内容
-
工作区与本地仓库比较
在Version Control中选中HelloWorld.java右键:
点击左下角Git—>log,就可以查看提交记录
18.IDEA中使用GIT-基本操作-版本回退及撤消
目标
在IDEA中完成版本回退以及撤消操作
内容
-
制造问题
选择Demo01.java,提交刚刚修改的内容到本地仓库中:
填写备注,然后点击commit:
在左下角Git中查看log
在Demo01.java中添加
提交到本地仓库
在左下角Git中查看log
可以看出此时:我们一共提交3次,下面我们来进行版本的回退
-
本地仓库回退撤消
在右下方Git点击log,此时我们可以看到3个提交的版本
现在我们在本地仓库中回退到第二次提交,选择第二次提交的标记,右键
选择Hard
-
工作区撤消
当我们在工作区编辑代码时候,希望撤销未提交本地仓库的代码时候,在Git中右键
弹出如下窗口
点击Rollback,代码则撤销
说明:针对上述工作区的代码撤消,有同学会有疑问,我直接删除不就完了吗,为什么这么麻烦,其实我们在实际开发中代码会很多,那么当你书写了很多不同地方的代码,以至于你都忘记哪些是新编写的代码了,那么删除是一件很痛苦的事情,并且容易误删,所以使用工作区撤销更加方便。
19.IDEA中使用GIT-远程仓库-创建与关联远程仓库
学习目标:
GitLab简介和用户登录GitLab
- GitLab简介
GitLab是一个用于 仓库管理系统的开源项目。使用Git作为代码的管理工具,并在此基础上搭建起来的Web服务。可通过Web界面进行访问公开的或者私人项目。他拥有GitHub和Gitee类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
官网:
https://about.gitlab.com
-
用户登录GitLab
- 登录网站
http://47.96.143.141:9999/users/sign_in 或者 http://git.eehp.cn/users/sign_in
注意:之前让同学们给老师的用户名和密码以及邮箱一定要确定是正确的,否则无法登录。
登录之后的页面效果:
20.GitLab使用介绍_项目、用户和组介绍(理解概念,除了组长其他人没有权限)
# 1.Projects : 表示gitlab中的项目
# 2.Users :当前gitlab中的所有的用户
# 3.Groups : 当前gitlab中所有的组,其实就是我们公司开发中的小组。分组的好处的是权限具有管理,各个小组之间是无法查看组之间的内容的
21.GitLab使用介绍_取消注册权限(了解概念,除了组长其他人没有权限)
GitLab为了安全起见,是没有注册权限的。这样只能后台生成账号和密码。
22.GitLab使用介绍_创建普通用户(了解,除了组长其他人没有权限)
【1】
按照上述或者如下都可以创建新的用户:
【2】
组长创建组员的时候选择的下面的普通用户,不能选择admin管理员
【3】创建好用户之后组长点击edit进行编辑
【4】在如下的弹出界面中输入密码和确认密码
【5】组员使用你的用户名和密码登录
【6】登录后输入组长给你的密码,以及你新的密码,如果还想使用组长给的密码那就输入之前的密码即可
【7】登录后的效果
普通用户登录的界面:
23.GitLab使用介绍_创建 group并将用户添加到组中(了解,除了组长其他人没有权限)
【1】
【2】
# 注意:组的命名必须按照规范:项目名或者案例名_班级编号_group_组的序号。例如:xuecheng_133_group_01
【3】组创建好之后需要向组中添加成员
**注意:各位组长这里需要给每个成员是Developer权限。**如果是组长需要给自己一个Owner权限。
【4】添加之后的效果:
24.将本地项目上传到gitlab上(需要组长将项目上传到gitlab上)掌握
【1】在本地新建项目
【2】选择New project
【3】在gitlab上创建项目
注意啦:去掉Initialize repository with a README的复选框
注意啦:创建的项目必须选择组
在gitlab上创建好的项目如下:
【4】选中当前项目的地址进行clone
【5】一定将idea中的代码进行提交到本地仓库
【6】
【7】
【8】
【9】
【10】
说明:各个组长就可以按照上述操作将本地代码上传到gitlab上了。
25.保护master分支(组长完成)掌握
在实际开发中除了组长即管理员,其他人是不能操作master分支的,包括上传和下载。为了防止其他人对master分支修改,所以需要对master分支进行保护。
【1】在gitlab上创建一个dev1分支
说明:在实际开发中每个小组,如果多个人开发相同功能那么就使用同一个分支,如果每个人负责一个功能,那么就给每个人创建一个分支。分支名最好是组员的名字
创建好dev1分支之后:
说明:在实际开发中每个人都在自己的分支上进行开发,如果开发完毕由组长进行分支的合并。
【2】设置master分支不被允许合并,设置其他分支可以合并和推送
受保护之后的效果:
26.从Gitlab上拉取项目至本地(组员和组长)
【1】到gitlab中复制要导入项目的连接地址
退回到项目位置,然后选择Clone
【2】关闭项目回到idea主界面
【3】将gitlab的项目连接地址放到URL后面的输入框中
【4】导入之后要查看当前项目在idea中的三个环境:
- maven地址
- 当前idea环境必须都是UTF-8编码
- 当前使用的是jdk8
27.在idea中切换分支(掌握,所有人)
【1】将gitlab中所有的分支拉取到idea中
【2】在idea中查看本地和远程分支
【3】切换到dev1分支上
注意:我们不能在master分支上进行书写代码,都在每个其他分支上写代码,然后最后确定没有问题之后再将其他分支上的代码合并到master分支上。
- 提交当前分支
很重要。很重要。很重要:在切换其他分支之前必须先将当前分支的代码进行提交,否则当前分支的代码就不存在了
- 切换分支
先从main切换为master,然后提交master,然后切换dev1.
- 导入后的效果
28.将除了master分支推送到gitlab中(掌握)
按照上述操作完成之后,组长布置需求之后,其他人就可以在自己的分支上进行开发,开发完毕并将分支提交到gitlab中。
【1】在dev1分支的测试类中书写新的代码
【2】将新增代码进行提交并推送到gitlab中
【3】gitlab上显示的结果
注意:推送的一定是dev1分支上的代码,如果推送的是master分支上的代码就会报错。
29.将其他分支代码合并到master分支上并提交到gitlab上(组长,掌握)
要想将dev1分支代码合并到master分支上,首先需要切换到master分支上,然后在合并
【1】将当前dev1分支上的代码进行提交
【2】切换到master分支上
切换的一定是本地master分支上。
【3】将dev1分支代码合并到master分支上
【4】将master分支上的代码提交并推送到gitlab上
【5】gitlab上的结果
注意:上述操作都必须是组长操作,如果不是组长不会推送成功。
30 补充
GitLab 用户组中的角色权限图一览
31总结
-
GIT概念
- 工作区 就是你在电脑里能看到的目录
- 暂存区 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
- 版本库 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库
- 远程仓库 常用的远程仓库有 gitee github gitlab
-
本地操作
- add与commit
- git add 文件名称 作用 工作区提交暂存区
- git commit -m 文件名称 作用 暂存区提交本地仓库
- git status 作用 查看文件状态
- 差异比较
- git diff 文件名 作用 工作区与暂存区比较
- git diff head 文件名 作用 工作区与本地库比较
- git diff --cached 文件名 作用 暂存区与本地库比较
- 版本回退
- git log 作用 查看当前操作日志
- git reflog 作用 查看所有操作日志
- git reset --hard head^ 作用 回退上一个版本
- git reset --hard 版本号 作用 回退到指定版本
- 修改撤消
- git checkout 文件名 作用 工作区撤消
- git reset head 文件名 作用 暂存区撤消
- add与commit
-
分支操作
- 创建分支 git branch 分支名称
- 切换分支 git checkout 分支名称
- 合并分支 git meger 分支名称
- 查看分支 git branch
- 删除分支 git branch -d 分支名称
-
远程仓库
- 关联 git remote add origin 远程仓库
- 拉取 git pull
- 推送 git push
- 克隆 git clone 远程仓库
-
IDEA集成GIT操作 重点掌握
所有内容都是操作,参考讲义进行