上一篇文章【尚硅谷】Git与GitHub基础全套完整版教程-笔记3中以GitHub操作为例,介绍了在实际操作中管理自己的远程库。接下来看看Git图形化界面操作,如果平时做项目时不使用Eclipse工具,可以选择不看第7部分,直接点击目录链接跳转到第8部分Git工作流。
目录
7.4 Oxygen Eclipse 克隆工程操作(版本高一些)
7.5 Kepler Eclipse 克隆工程操作(版本比较低的Eclipse)
7 Eclipse中Git插件简介
到目前为止讲解的命令行已经可以满足大部分的操作了。其实Git也可以实现图形化界面操作。
7.1 Eclipse新建工程
7.1.1 工程初始化为本地库
先创建一个Maven工程,右键new,选择Maven Project,Next,填写Group Id和Artifact Id,以及Packaging,象征性的建几个类。刚建完发现在本地文件夹下没有.git这个文件,需要初始化。
①工程→右键→Team→Share Project→Git
点击下面方框
②Create Repository
③Finish
7.1.2 Eclipse中设置签名
window->prefer->Team->Git->Configuration->Reposit....
能看到工程的配置文件
(1)在Eclipse中设置本地库范围签名(用户名字)
(2)设置用户email
Eclipse查看git文件标识说明:window->prefer->Team->Git->Label Decorations
Eclipse中文件追踪添加到缓存区:文件/项目-> 右键->Team->Commit。
选中文件,拖拽即可。
Eclipse查看项目中的所有文件的Navigator窗口打开,Navigator栏可以看到所有文件。
7.2 Eclipse 忽略文件
7.2.1 文件忽略介绍
概念:Eclipse 特定文件。
这些都是 Eclipse 为了管理我们创建的工程而维护的文件,和开发的代码没有直接关系,最好不要在 Git 中进行追踪,也就是把它们忽略。
例如:
.classpath 文件
.project 文件
.settings 目录下所有文件
为什么要忽略 Eclipse 特定文件呢?同一个团队中很难保证大家使用相同的 IDE 工具,而 IDE 工具不同时,相关工程特定文件就有可能不同。如果这些文件加入版本控制,那么开发时很可能需要为了这些文件解决冲突,浪费精力。
(文件忽略)GitHub 官网样例文件
下面的链接提供了各种语言的忽略文件。
https://github.com/github/gitignore
https://github.com/github/gitignore/blob/master/Java.gitignore
7.2.2 文件忽略具体步骤
(1)编辑本地忽略配置文件,文件名任意(eg:在家目录下创建Java.gitignore,其实不一定在家目录下,但是为了和git的.gitignore在同一目录,保持一致)
Java.gitignore 文件编辑如下:
# 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* # add by yourself .classpath .project .settings target |
(2)在~/.gitconfig 文件中引入上述文件,如下:
[core]
excludesfile = C:/Users/Lenovo/Java.gitignore
[注意:这里路径中一定要使用“/”,不能使用“\”]
(3)完成后在Eclipse查看.gitconfig 配置:window->prefer->Team->Git->Configuration
(4)重启eclipse->Navigator窗口查看忽略是否成功,忽略的文件没有问号。
7.2.3 提交暂存区和提交到库
(1)提交到暂存区:项目右键>Team> add to Index
文件上显示+
(2)提交到本地库中: 项目右键>Team>Commit (我的快捷键:ctrl+shift+#)
直接commit也是可以的。
7.3 将本地过程推送到远程库
(在GitHub创建新的远程库TestGit)
复制http地址,项目->右键->Team->Remote->Push
URI: 粘贴在GitHub复制的地址,后面2个默认。User账号,下面是密码。然后点下一步。
点击Add All Bran... -> 然后下一步/或者直接Finish
可以添加一些日志信息->Finish
执行成功的结果:
7.4 Oxygen Eclipse 克隆工程操作(版本高一些)
(1)右键, Import...导入工程
Next
(2)next,到远程库复制工程地址
(3)粘贴到URL ,如下图,然后点击next
(4)选择分支 Next
(5)指定工程的保存位置(最好选择eclipse工作区) 然后next
等待下载
(6)指定工程导入方式,这里只能用:Import as general project (作为普通工程导入)
(7)点击Finish
(8)转换工程类型 (导入进来的不适合编写,需要修改Eclipse工程)
工程上点右键->Configure->Convert to Maven Project
(9)最终效果
会生成eclipse工程的特定文件。在这Maven起到很大的作用。
7.5 Kepler Eclipse 克隆工程操作(版本比较低的Eclipse)
问题:不能保存到当前 Eclipse 工作区目录 (和上面第5步不同)
放在工作区[第(7)步时]不能导入,如下图:
正确做法:保存到工作区以外的目录中,其他的和上面都一样。
7.6 在Eclipse中解决冲突
7.6.1 Eclipse制造冲突
(1)分别修改TestGit和TestGit2同一文件同一位置
(2)然后:都提交到本地库,快捷ctrl+shift+#(他们两人个是个的本地库)
(3)然后TestGit推送到远程库(这里不是首次推送和上面不同 如下:)
工程右键->Team->Push Branch ‘master’)(所以默认直接下一步)->等条读完(弹出对话窗口)
(4)这时TestGit2不能推送,会出现这个图,因为不是最新版本
更新:右键->Team->pull
7.6.2 Eclipse解决冲突
(1)冲突文件→右键→Team→Merge Tool
对于多行代码很有必要。
(2)修改完成后Eclipse正常执行[该文件] ,add/commit 操作即可。
8 Git 工作流(3种)
8.1 概念
在项目开发过程中使用 Git 的方式。
8.2 分类
8.2.1 集中式工作流像
集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到 Master 这个分支上。
这种方式与 SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。
8.2.2 GitFlow 工作流(最经典,用得最多)
Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
8.2.3 Forking 工作流(Linux团队用的多)
Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受不信任贡献者的提交。
8.3 GitFlow 工作流详解
8.3.1 分支种类
①主干分支 master
主要负责管理正在运行的生产环境代码,永远保持与正在运行的生产环境完全一致。
②开发分支 develop
主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
③bug 修理分支 hotfix
主要负责管理生产环境下出现的紧急修复的代码。从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
④准生产分支(预发布分支) release
较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。
⑤功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。开发完成后会合并到开发分支。
8.3.2 GitFlow 工作流举例
下面是GitFlow 工作流举例图:
8.3.3 分支实战
具体操作中没有必要把这些分支都做一遍,基于一小块我们操作一遍。
8.3.4 分支实战具体操作
(1)创建分支: 右键->Team->Switch To->New Branch
(2)给分支命名->Finish (创建后自动切换到分支)
(3)修改分支hot_fix的happy.java的内容(要避免冲突),提交到本地库
(4)远程推送到远程库
选择文件happy.java,然后右键-> Repository->Pish Branch ’hot_fix’
然后下一步->然后push
等待一会儿,弹出下面对话窗口说明成功了。
(5)ybq拉取操作不需要选择分支:(这里TestGit2模拟岳不群)
项目右键->Team->Pull
补充:上面操作如果说没有更新(上面没问题从这到(6)之间不用看)
项目右键>Team>Remote>Fetch Tags
(6)切换分支审查代码:项目右键>Team>Switch To > Other...
(7)选择分支
本地的分支只有master,远程还有hot_fix
(8)点击Check out as New Local Branch
(9)创建新分支,选择Check out new branch为检出远程新分支
(10)切换回 master
(11)合并分支
选择要合并的分支,点Merge
合并结果
合并后直接提交到远程库(本地库已经提交)
右键->Team-Remote->Push Branch master
9 Gitlab 服务器搭建过程
安装CentOS7
在Linux环境下装,建议7。老师准备好了镜像文件。新建虚拟机。参照韩顺平老师视频看Linux。
9.1 官网地址
首页:https://about.gitlab.com/
点击Installation
安装说明:https://about.gitlab.com/installation/
9.2 安装命令摘录——先不要着急按照这个命令去装
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ee
实际问题:yum 安装 gitlab-ee(或 ce)时,需要联网下载几百 M 的安装文件,非常耗时(一旦网络不好,容易出错,还需要回复快照等,很麻烦),所以应提前把所需 RPM 包下载并安装好。
下载地址为:(老师推荐的版本,打开链接,点击Download)
https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
9.3 调整后的安装过程
ee是企业版本(Enterprise Edition), ce是社区版本(Community Edition)。从协议来说,社区版更宽松。
sudo rpm -ivh /opt/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce
(安装包已经下载下来了。)新建一个文件install.sh把上述的命令复制进去,就不用一行一行安装了。为了保险,新建一个快照“准备就绪”。
当前步骤完成后重启。(绿油油的安装过程)
9.4 配置并启动Gitlab服务器操作
初始化配置 gitlab
$gitlab-ctl reconfigure #这个会执行很长时间,action run经常出现,要有耐心。装了很多东西,过程很复杂。
启动 gitlab 服务
$gitlab-ctl start
停止 gitlab 服务
$gitlab-ctl stop
9.5 浏览器访问Gitlab首页
访问 Linux 服务器 IP 地址即可,如果想访问 EXTERNAL_URL 指定的域名还需要配置域名服务器或本地 hosts 文件。
如果网页出现拒绝访问,执行一下命令:
$service firewalld stop //停止防火墙服务
初次登录时需要为 gitlab 的 root 用户设置密码。
root/atguigu2018good
应该会需要停止防火墙服务。但是真正在生产环境下面,运维彻底把防火墙关掉确实是不太可取的,还是应该请运维小伙伴设置好的防火墙策略,开放需要访问的端口号。
10 总结
到目前为止,整个【尚硅谷】Git与GitHub基础全套完整版教程的笔记已经更新完毕,现在做一个简单的总结。
10.1 版本控制
版本控制介绍:个人开发改进迭代;团队协作
版本控制工具介绍:集中式版本控制工具;分布式版本控制工具
10.2 Git简介
Git简史
Git结构
Git和代码托管中心
Git安装
10.3 Git命令行操作
本地库操作
远程库操作
10.4 Git图形化界面操作
Eclipse的文件操作(不使用的话可忽略)
Git工作流
10.5 Gitlab服务器环境搭建
看具体公司需要
说明:记录学习笔记,如果错误欢迎指正!写文章不易,转载请联系我。