Java高级之Git
第1章 Git简介
Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到非常大的项目的所有内容。
Git易于学习,占用空间小,性能快如闪电。它超越了SCM工具,如Subversion,CVS,Perforce和ClearCase,具有廉价的本地分支,方便的暂存区域和多个工作流程等功能。
历史
作用
工作机制
版本控制工具
-
集中式版本控制工具
- SVN是集中式版本控制系统,版本库是集中放在中央服务器的,所以首先要从中央服务器下载最新的版本,然后开发代码,写完代码后需要把自己的代码推送到中央服务器。
- 缺点
- 服务器单点故障
- 容错性差
-
分布式版本控制工具
- Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS)
- 分为本地仓库和远程仓库
- 本地仓库
- 开发人员自己电脑上的Git仓库
- 远程仓库
- 远程服务器上的Git仓库
- 可以实现团队内或跨团队协作
- 本地仓库
- 优点
- 容灾能力强
- 本地版本管理
- 异地协作
- 灵活分支
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
- 局域网
- GitLab
- 互联网
- GitHub(服务器在国外)
- Gitee,也称为码云(国内网站)
第2章 Git安装
2.1 官网
https://git-scm.com/
2.2 安装步骤
-
双击资料中的Git-2.36.1-64-bit.exe文件,点击Next
-
选择安装位置,建议安装到非中文无空格的目录下,点击Next
-
默认勾选即可,无需修改,点击Next
-
选择开始菜单文件夹,默认即可,点击Next
-
选择默认的编辑器,默认即可,点击Next
-
默认分支名设置,还是默认设置(选择让Git决定,分支名默认为master),点击Next
-
是否将Git添加到环境变量PATH中,选择第一项(不修改环境变量,只在Git Bash中使用Git),点击Next
-
选择连接协议,默认即可,点击Next
-
选择后台客户端传输协议,默认即可,点击Next
-
配置Git文件的行末换行符,Windows使用CRLF,Linux使用LF,默认即可(自动转换),点击Next
-
选择Git终端类型,默认即可(Git Bash),点击Next
-
选择Git pull合并模式,默认即可,点击Next
-
选择Git的凭据管理器,默认即可,点击Next
-
其他配置,默认即可,点击Next
-
实验选项配置,新特性,默认都不勾选,点击Install
-
安装完成,取消勾选第二项,点击Finish
-
在任何目录下右键出现以下两项说明Git安装成功
2.3 配置全局用户签名
- Git是分布式版本控制系统,所以需要配置用户名和邮箱作为一个唯一标识,即用户签名。
- 作用
- 区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
- Git首次安装必须设置一下用户签名,否则无法提交代码。
- 相关命令
- 配置用户名
- git config --global user.name 用户名
- 配置邮箱
- git config --global user.email 用户邮箱
- –global代表全局属性,所有的Git项目都会使用该用户签名。如果单独给某个项目设置用户签名把 --global去掉即可。
- 注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。
- 配置用户名
- 配置步骤:
-
在任何目录下右键,点击Git Bash Here
-
执行以下命令
-
在当前Windows登录的系统用户路径下,会生成一个.gitconfig的隐含文件,里面可以看到刚刚设置的信息。如果不用命令设置,也可以直接打开文件进行设置。
-
也可以通过git config --list命令查看配置信息
第3章 Git本地库实战
3.1 核心概念
-
工作区(Working Directory)
就是你电脑本地硬盘目录,一般是项目当前目录
-
暂存区(stage)
存放在.git目录下的index文件,我们把暂存区有时也叫作索引(index)。
-
版本库(Repository)
工作区里的隐藏目录.git,它就是Git的版本库(也称为本地库)。
3.2 常用命令
命令名称 | 命令作用 |
---|---|
git init | 初始化本地库 |
git status | 查看本地库状态 |
git checkout – 文件名 | 将未添加到暂存区的改变删除 |
git add 文件名 | 将文件添加到暂存区 |
git commit -m “日志信息” 文件名 | 将文件提交到本地库 |
git log | 查看日志 |
git log --pretty=oneline | 在一行显示日志 |
git reflog | 查看引用日志,即历史记录 |
git reset --hard HEAD^ | 回退一个版本 |
git reset --hard HEAD~n | 回退n个版本 |
git reset --hard 版本号 | 版本穿梭 |
git branch -v | 查看分支 |
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git branch -d 分支名 | 删除分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
3.3 初始化本地库
-
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库,获取Git仓库通常有两种方式:
- 在本地初始化一个Git仓库
- 从远程仓库克隆
-
本地初始化Git仓库步骤:
-
在电脑磁盘创建一个目录git_test
-
进入git_test目录中,右键点击Git Bash Here
-
执行git init 命令,发现Git默认创建了一个master分支,并且git_test目录中生成了一个.git的目录
-
-
master分支
-
.git目录
-
查看.git目录结构
-
本地库初始化完成
-
3.4 查看本地库状态
3.4.1 首次查看
执行git status 命令
提示在主分支上没有任何需要提交的文件
3.4.2 在工作区创建新文件
执行vim hello.txt 命令打开一个新文件,添加内容后保存退出
3.4.3 再次查看本地库状态
再次执行git status 命令
状态说明:
- Untracked 未跟踪(未被纳入版本控制)
- Tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
颜色说明:
- 红色表示新建文件或者新修改的文件,都在工作区.
- 绿色表示文件在暂存区
也可以使用git status -s使输出信息更加简洁
- ?? : 表示未跟踪状态
3.5 添加到暂存区
3.5.1 将工作区中的文件添加到暂存区
执行git add hello.txt 命令
3.5.2 查看本地库状态
- 文件被添加到暂存区,颜色变成绿色
- 再查看.git目录发现多了一个index文件
- 如果想要将文件从暂存区移除可以执行git rm --cached 文件名或git reset 文件名命令
3.6 添加到本地库
3.6.1 将暂存区的文件添加到本地库
执行git commit 命令,输入这次改变的描述信息,保存退出
3.6.2 查看本地库状态
文件被提交到本地库,提示在主分支没有任何需要提交的内容
3.7 修改文件
- 修改hello.txt文件
- 再次查看本地库状态
提示文件被修改,需要再次添加到暂存区并提交到本地库
-
重复执行以上步骤,以便在版本库中生成多个版本
-
注意:每次修改完都需要执行add和commit的操作(包括删除了文件),如果不是新建的文件可以将add和commit一起执行,执行命令git commit -am “内容改变描述”
3.8 查询版本
-
执行git log 命令详细查询,可以显示用户签名和日期
-
执行git log --pretty=oneline 命令简要查询,只显示版本号即当前指针指向的版本
-
执行git reflog查询历史记录
3.9 版本回退与穿梭
3.9.1 版本回退
-
执行git reset --hard HEAD^ 命令回退一个版本
-
查询当前所在版本
-
查询历史记录
-
查看文件内容
-
执行git reset --hard HEAD~3 命令回退三个版本
-
查询当前所在版本
-
查看文件内容
3.9.2 版本穿梭
-
查询历史记录
-
执行git reset --hard 版本号 命令穿梭到最新版本
-
查看文件内容
3.10 分支操作
3.10.1 什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本(分支底层其实也是指针的引用)。
3.10.2 分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.10.3 创建分支
执行git branch dev命令创建dev分支
3.10.4 查看分支
执行git branch -v命令查看分支
带星号的是目前使用的分支
3.10.5 切换分支
执行git checkout dev命令切换到dev分支
3.10.6 合并分支
-
修改dev分支中hello.txt文件的内容
-
添加到暂存区并提交到本地库
-
切换到master分支,查看hello.txt文件中文件的内容
-
执行git merge dev命令将dev分支中的内容添加到master分支中
-
再次查看hello.txt文件的内容
发现dev分支中添加的内容已经合并到master分支中
3.10.7 解决冲突
-
冲突产生的原因
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
-
产生冲突后文件的效果
dev分支添加
master分支添加
将dev分支合并到master分支时出现冲突
出现冲突时master分支上会有MERGING
查看文件内容
-
解决冲突
重新编辑hello.txt文件,决定保留那个分支的内容之后将文件添加到暂存区并提交到本地库即可
我们是将master分支和dev分支的内容都保留了下来
-
容易产生冲突的操作
- 多个人同时操作了同一个文件
- 一个人一直写不提交
- 修改之前不更新最新代码
- 擅自修改同事代码
-
减少冲突的操作
- 养成良好的操作习惯,先`pull`再修改,修改完立即`commit`和`push`
- 一定要确保自己正在修改的文件是最新版本的
- 各自开发各自的模块
- 如果要修改公共文件,一定要先确认有没有人正在修改
- 下班前一定要提交代码,上班第一件事拉取最新代码
- 一定不要擅自修改同事的代码
第4章 远程库实战
4.1 Gitee简介
Gitee(码云) 是开源中国社区2013年推出的基于 Git 的代码托管服务,目前已经成为国内最大的代码托管平台,致力于为国内开发者提供优质稳定的托管服务。
官网:https://gitee.com/
文件大小限制:https://gitee.com/help/articles/4283
4.2 常用命令
命令名称 | 命令作用 |
---|---|
git remote add 别名 远程库地址 | 给远程仓库起别名 |
git push 别名 分支名 | 将本地库某个分支中的内容推送到远程库 |
git clone 远程地址 <本地库名字> | 克隆远程库到本地 |
git pull 远程库地址别名 远程库分支名 | 拉取远程库分支内容到本地库 |
4.3 将本地库推送到远程库
4.3.1 创建远程仓库
-
点击账号头像左边的加号,选择新建仓库
-
填写仓库名称后,点击底部的创建即可
提示:如需创建公开仓库,请在创建仓库后通过「仓库设置」修改为公开
-
仓库创建成功页面
4.3.2 推送本地库
-
点击远程库中的HTTPS按钮,点击复制按钮复制https地址
-
在本地库执行git remote add 别名 远程库地址 添加远程仓库的地址
-
在本地库的config文件中会自动添加上远程地址与别名的映射
-
执行git push origin master命令将本地库的master分支推送到远程库
-
会弹出一个认证窗口,填写你的Gitee账号密码后点击确定
-
本地库成功推送到远程库
-
Gitee中已经有本地库的文件
-
Windows的凭据管理器中多了一条gitee的凭据
-
如果想删除Gitee中的仓库,点击仓库中的管理,然后就可以在左侧菜单看到删除仓库的功能
4.4 团队内协作
4.4.1 开发者A创建本地库和远程库
-
在本地创建一个gitee-A目录,执行git init初始化本地库
-
配置当前项目的用户签名,配置之后当前项目将不再使用全局的用户签名
-
执行之后在本地库.git目录中的config文件中会添加上用户签名
-
在工作区创建新文件、添加内容、添加到暂存区、提交到本地库
-
在GitHub中创建远程库gitee-demo
-
在本地库配置gitee-demo远程库别名并将本地库代码推送到远程库,具体操作见4.3
4.4.2 开发者B克隆远程库到本地
- 先将Windows中的凭据删掉,如果不删还是开发者A的身份
-
复制远程库gitee-demo的https地址
-
执行git clone 远程库地址 gitee-B命令在本地生成一个gitee-B目录
-
弹出认证窗口后,输入开发者B的Gitee账号密码,点击确定
- 命令行提示403拒绝访问,此时需要仓库的管理员(开发者A),将开发者B添加为仓库成员
- 开发者A进入仓库管理页面,如下:点击邀请用户后,将邀请链接发给开发者B
-
开发者B访问邀请链接,接受即可
-
开发者B再次克隆远程仓库到本地,弹窗输入开发者B的账号密码,确定后可以看到仓库克隆成功
-
在.git目录的config文件中也自动添加了远程库地址与别名的映射
-
进入gitee-B目录,设置gitee-B当前项目的用户签名
-
修改内容、添加到暂存区并提交到本地库
4.4.3 开发者B将本地库推送到开发者A的远程库
- 因为开发者B已经成为仓库成员,直接推送即可
- 远程仓库可以看到B的提交记录
4.4.4 开发者A更新本地库
开发者A在本地执行git pull 远程库地址别名 master 命令,将远程库gitee-demo最新的代码拉取到本地
4.5 跨团队协作
如果你在远程仓库中发现一个好的项目,而你又不是该项目团队中的一员,比如上图中的开发者X,你可以通过fork的操作将别人的项目拷贝到你的账户中。
4.5.1 fork别人的项目到自己的账户
-
开发者A创建一个仓库gitee-fork
-
点击 初始化readme文件,仓库会自动生成两个文件
-
将仓库改为公开仓库,进入仓库管理页面,滑到最底部,选择开源
-
复制仓库链接
-
登录开发者X的账号打开链接
-
点击Fork按钮
-
选择目标空间后,点击确认即可
-
在开发者X的账户中也创建了一个同样的仓库,并且仓库名字下方会显示fork的谁的仓库
4.5.2 被fork者更新仓库内容
-
登录开发者A的账号,打开gitee-fork仓库显示被fork了1次
-
开发者A打开一个文件,然后在线编辑文件内容,修改后提交
4.5.3 fork者更新仓库内容
-
登录开发者X的账户,打开gitee-fork仓库,点击更新按钮后,确定即可
-
更新成功
4.5.4 fork者发送Pull requests请求
作为fork者的开发者X,也可以修改内容并通过发送Pull requests请求将代码合并到被fork的开发者A仓库中
-
开发者X在线修改文件后,提交
-
点击Pull Requests,再点击新建 Pull Request
-
填写标题后,点击创建Pull Request
-
被fork者(开发者A)会收到通知
4.5.4 被fork者接受Pull requests合并代码
-
登录开发者A的账户,打开仓库gitee-fork发现有一个Pull requests请求,点开
-
点开选项后还可以对Pull Request请求进行评论
-
合并前必须先审查通过,测试通过
-
审查和测试都通过后,点击合并,再点击合并分支
-
点击接收Pull Request
-
合并成功
-
查看文件内容
4.6 SSH免密登录
通过https模式推送代码需要进行账号和密码授权或使用token。
ssh模式比https模式的一个重要好处就是,每次push操作时不用重复填写账号和密码。前提是你必须是这个项目的拥有者或合作者,且配好了ssh key。
配置ssh key的命令:ssh-keygen -t rsa -C 注释
配置ssh key的步骤:
-
检查Windows登录用户的工作目录是否有.ssh的目录,有则将其删除。
-
在任意目录右键打开Git Bash Here,执行ssh-keygen -t rsa -C ChengLong 命令
-
进入Windows登录用户的工作目录,进入.ssh目录,发现两个文件,一个公钥(id_rsa.pub),一个私钥(id_rsa)
-
查看公钥id_rsa.pub文件中的内容并复制
-
登录账户,点击用户头像,点击设置,在点击SSH公钥
-
填写标题,再将公钥文件的内容粘贴到下方,点击确定
-
输入当前账号的密码完成验证即可
-
添加成功
-
选择账户中的一个仓库,例如gitee-demo,复制SSH的地址
-
命令行执行 git clone 远程仓库地址 目录名称 克隆到本地,第一次建立连接需要输入yes
-
克隆成功,查看.git目录中的config文件,发现远程仓库的地址不再是HTTPS协议
4.7 GitHub简介
GitHub是目前全球最大的基于Git的代码托管平台。
GitHub官网:https://github.com/
文件大小限制:https://docs.github.com/cn/repositories/working-with-files/managing-large-files/about-large-files-on-github
注意:由于GitHub的服务器在国外,访问比较慢,甚至访问不了,需要在浏览器中安装一下资料中的GitHub加速插件
第5章 Idea集成Git
5.1 定位Git程序
-
打开Idea,点击Configure(这种配置对新创建的工程都起作用);如果打开Idea没有下面的窗口也可以创建一个新工程在Settings里设置(这种设置方式只对当前创建的工程起作用)
-
点击Settings
-
点击Version Control,点击Git,查看有没有自动识别出Window中安装的git.exe程序,如果路径不对手动选择一下
-
点击Test按钮测试,弹出Git的版本
5.2 配置忽略文件
5.2.1 那些文件要忽略
-
Eclipse特定文件
-
Idea特定文件
-
Maven工程的target目录
5.2.2 为什么要忽略它们
这些文件或目录与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。
5.2.3 如何忽略
- 方式一:在项目根目录下创建.gitignore文件,使用这种方式每个项目都要单独创建,而且需要将改文件添加到本地库中,文件中的内容见方式二。
- 方式二:创建一个全局的忽略文件,使用这种方式就不需要为每个项目单独创建忽略文件了,创建步骤:
1.创建忽略规则文件.gitignore,该文件放在那里都可以, 建议与.gitconfig放在同一个目录下(.gitconfig在当前Windows登录用户的工作目录中)
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2.在.gitconfig文件中引用忽略规则文件.gitignore
[user]
name = cl
email = 1010056799@qq.com
signingkey = “”
[core]
autocrlf = true
excludesfile = C:/Users/aqr_lmy/.gitignore
[credential “https://gitee.com”]
provider = generic
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
5.3 初始化本地库
-
创建一个Maven工程idea_git888
-
点击工具栏VCS进行初始化(不同的Idea版本位置可能不同)
-
选择刚刚创建的工程
-
初始化之后pom.xml变成了橙色,被忽略的文件也变了颜色
-
项目根目录也生成了.git目录
-
工具栏出现了Git操作相关工具
5.4 添加到暂存区
-
新建一个Java文件,发现文件变成了橙色,同时弹出一个提示框提示是否添加到暂存区,如果点击Add只会将当前Java文件添加到暂存区,暂时点击Cancel不添加到暂存区
-
添加main方法,在控制台打印语句,测试,使用方式跟之前一样,只是文件有颜色而已
-
在文件上或项目上右键,找到Git选项,点击Add将文件添加到暂存区
-
添加到暂存区之后文件变成了绿色
5.5 提交到本地库
5.5.1 方式一:在文件或项目目录上提交
-
在文件或项目上右键,找到Git选项,点击Commit File…或Commit Directory…
在文件上右键效果:
在项目上右键效果:
-
写提交信息并点击Commit按钮
-
提交成功,生成版本之后文件变成了正常的黑色
-
每次修改了文件也可以直接进行提交到本地库操作,只要保证提交时文件被勾选了就行
5.5.2 方式二:点击工具栏按钮提交
点击工具类上的绿色√
点击Commit提交更新
5.6 版本回退
- 点击Idea左下角的Version Control,点击Log
- 选中要回退的版本,右键点击Reset Current Branch to Here…
- 常用的有Soft(软回退):不同会被保存到暂存区;Hard(硬回退):不同不会被保存到暂存区,直接回退到指定的版本
-
项目中添加一个新文件测试软回退和硬回退的区别
-
软回退到第二次更新的效果:新文件被添加到了暂存区
-
硬回退到第二次更新的效果:新文件被删除
5.7 创建分支
5.7.1 方式一:右键创建
-
在文件或项目上右键
-
点击New Branch
-
指定分支名称后点击Create按钮创建
5.7.2 方式二:点击Idea右下角创建
-
点击Git:master,然后点击New Branch
-
后面的步骤与5.7.1一样
5.8 切换分支
创建分支、切换分支、合并分支都有两种方式,在此只说明第二种方式(点击Idea右下角)。
-
在Idea中创建新分支之后会自动切换到新分支,在Idea右下角即可看到当前所在的分支
-
点击Git:dev,点击master,点击Checkout切换到master分支
-
当前使用的分支点击它只能修改分支名称以及推送分支
5.9 合并分支
-
在dev分支中修改Java文件
-
提交到本地库
-
切换到master分支
-
合并dev分支到master分支
-
合并后效果
5.10 解决冲突
-
dev分支在GitTest文件的第9行添加内容,并提交到本地库
-
master分支在GitTest文件的第9行添加不同的内容,并提交到本地库
-
将dev分支合并到master,弹出冲突提示框
-
点击第一个按钮使用当前分支(master)的内容
-
点击第二个按钮使用被合并的分支(dev)的内容
-
点击第三个按钮手动决定使用那个分支的内容
-
-
点击第三个按钮Merge…的效果
-
点击左边双箭头使用master分支的内容
-
点击右边双箭头使用dev分支的内容
-
-
先点击左边双箭头再点击右边双箭头,保留master和dev两个分支(也可以只保留某一个分支)的内容,点击Apply按钮冲突便得到解决
-
查询版本发现版本库中多了一个解决冲突的版本
第6章 Idea集成Gitee
6.1 安装Gitee插件
-
点击Idea中的Settings,点击Plugins
-
在搜索框搜索Gitee,点击Install
-
安装成功点击Restart IDE重启Idea
-
再次点开Settings,在Versiong Control中就会发现Gitee选项,就可以通过邮箱和密码登录Gitee账户了
6.2 分享本地工程到Gitee
-
点击VCS,找到Share Project on Gitee(不同的Idea版本位置可能不同)
-
设置远程仓库的名字(默认就是项目名)、是否是私有仓库、远程仓库地址别名,然后点击Share
-
在Gitee账户中自动创建了一个远程仓库
6.3 推送本地库到远程库
-
点击Idea右下角Git:master,找到Push…
-
默认的origin是https的地址,也可以改用SSH模式推送
-
点击origin,点击Define Remote
-
复制远程仓库的SSH地址,粘贴过来,换一个别名,点击OK
-
选择origin-ssh,点击Push推送
6.4 克隆远程库到本地
6.4.1 方式一:通过URL地址克隆
-
点击Get from Version Control
-
指定克隆的URL(https或ssh的都可以)和项目名称及存放的路径,点击Clone
-
克隆成功弹出提示框,点击Yes打开工程
6.4.2 方式二:通过Gitee账户选择要克隆的工程
-
同6.4.1的第一步
-
点击Gitee账户,选择要克隆的项目
-
后面的步骤与6.4.1一样
6.5 从远程库拉取新内容
-
在项目或文件上右键,找到Pull…
-
选择远程地址的别名和分支后点击Pull按钮
-
或者点击Idea面板右上角的快捷方式拉取
-
选择合并到当前分支,点击OK
第7章 GitLab私服
7.1 简介
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
官网:https://about.gitlab.com/
点击官网最下方的install可以查看安装说明
选择CentOS7查看安装文档
7.2 安装GitLab
- 准备一台安装了CentOS7的虚拟机
- 保证能上网
- 关闭防火墙
- 内存最好4G以上
-
将资料中的gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm安装包上传到虚拟机的/opt/software目录下
-
执行以下命令安装依赖的工具包
yum install -y curl policycoreutils-python openssh-server perl
-
在gitlab的rpm包所在的目录执行以下命令安装gitlab
rpm -ivh gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
-
执行以下命令初始化GitLab服务(需要等待很久,大概10分钟)
gitlab-ctl reconfigure
-
执行以下命令启动GitLab服务
gitlab-ctl start
-
在浏览器地址栏输入虚拟机的ip地址访问GitLab,GitLab默认端口号80
-
第一次访问需要修改root密码
-
修改完密码使用root账户和新的密码进行登录
-
登录成功,默认英文界面,可以设置为中文
- 修改保存后,需要退出再登录才能生效
-
点击新建项目即可创建仓库
-
点击创建空白项目
-
创建仓库的界面与Gitee类似,填写项目名称后,点击新建项目即可
-
如果要关闭GitLab服务执行以下命令
gitlab-ctl stop
-
只执行上面的命令GitLab依赖的其他服务还在运行,想要彻底关闭所有相关服务需要执行以下命令
systemctl stop gitlab-runsvdir
-
可以将以上服务的开机自启关闭了
systemctl disable gitlab-runsvdir
-
将gitlab-runsvdir服务开机自启禁用掉之后,以后开启虚拟机直接执行gitlab-ctl start启动GitLab将失败,直接执行以下命令启动即可,不需要再执行gitlab-ctl start
systemctl start gitlab-runsvdir
7.3 在Idea上安装GitLab插件
-
在插件商店搜索GitLab
-
安装GitLab Projects 2020,重启Idea
-
配置GitLab服务器
-
配置成功
7.4 推送本地库到GitLab
-
在GitLab上创建远程库gitlab-demo
-
点击克隆,复制HTTP地址
-
修改访问地址
复制出来的地址是一个例子:http://gitlab.example.com/root/gitlab-demo.git,
需要改为http://gitlab的地址/root/gitlab-demo.git,
例如 http://192.168.6.100/root/gitlab-demo.git
-
在Idea中推送时定义GitLab远程仓库的地址
-
点击Push将Idea中的项目推送到GitLab
-
输入GitLab的用户名和密码点击Log In
-
推送成功
第8章 Git工作流
8.1 简介
简单来说就是一个项目的成员们在工作中统一使用Git的工作方式。
GitFlow工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
-
简单的分支
-
复杂的分支
8.2 分支的种类
-
主干分支(master)
主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。
-
开发分支(develop)
主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
-
bug修理分支(hotfix)
主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
-
发布版本分支(release)
较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段时间较稳定后可以视情况删除。
-
功能分支(feature)
为了不影响较短周期的开发工作,一般会把中长期开发模块从开发分支中独立出来。 开发完成后会合并到开发分支。