Git介绍
QA&小白
Git 是什么?
Git是一个开源的免费的分布式版本管理系统,最初是由Linux内核发明人Linus Torvalds用于管理Linux内核开发而开发的。
大神
小白Git的分布式是怎么样的?
相对于集中式的版本控制系统,每个开发者可以克隆,在本地机器上拷贝一个完整的git仓库,并可以提交代码到本地。
大神小白
跟SVN比起来,Git的速度能快多少?
参见如下benchmark测试对比图,就可以清楚看出Git的速度了!
大神
小白
Git的分支是什么?
分支(branch)是Git的核心概念之一,类似于CC的流,但又不相同。
大神
Git 支持创建多个分支用于不同的用途,比如默认的master分支用于生产环境,创建dev分支用于测试环境,其他的一些分支则用于各种功能特性的开发环境。各个分支之间是独立的,当开发者提交代码到专用开发分支时,不用担心污染到其他分支的代码,而且各个开发者之间可以并行开发,最后通过合并(merge)把代码合并到主干(master/dev)分支。
小白
Git的暂存区(staging area)是什么?
暂存区是在提交(commit)代码前的一个中间区域,可以用这个图来说明。
大神
小白
Git相对于CC有哪些优势?
优势简直两只手都数不多来啊~例如↓↓↓
大神
Git一个副本支持无限量的分支,而CC每个流都需要一个副本。切换分支只需要一个命令,而切换流需要下载不同的仓库副本,占空间、切换不变、代码同步异常困难。
Git 进行代码的合并只需要一个PR,而CC需要繁杂的合并工作,并且容易出错。尤其是只需要合并部分代码时,只能一个个提交进行合并,极易遗漏。
Git 的PR保存的是快照,非常便于进行代码review,每次代码提交和发布都是透明且可控的。CC缺乏相应功能。
Git 支持非常灵活的多分支开发,可以无限并行。CC 只能在有限(1-2)个流上进行,并行任务及其有限(比如两个流,只能进行两个版本的任务,很难进行更加超前的开发),并且在发布后需要手动同步。
Git 每次commit和pr都可以非常便利的查看所有变更的文件和每个文件变更的细节,CC主要靠每个文件的历史记录。
Git 灵活的分支支持快速地迭代和高效的开发、发布流程。CC臃肿复杂。
Git 支持友好的多人协同开发,CC支持极差。
Git 拥有友好、强大的用户界面,超多可选的客户端,强大的命令行工具。CC上世纪的设计已经难以适应当前的主流节奏。
Git 强大的功能可以非常简单地处理非常复杂的场景和需求,CC不能适应复杂的场景。
Git 免费,CC非常昂贵。
Gitlab的使用
小白
在Gitlab中,作为项目的管理者,怎么创建新的项目呢?
通常情况下,先创建群组,并把项目成员加入群组,接着可以在群组中创建新项目,具体操作是这样的:
大神
01
新建群组
022
群组命名
输入群组名称/描述,选择可见性级别(私有/内部/公开),注:群组URL不支持中文字符。
可见性级别:
※ 私有:仅限项目组的成员可访问
※ 内部:登陆用户可访问
※ 公开:无论登陆与否,都可以访问
03
新建项目
在群组中,创建新项目
04
项目命名
输入项目名称/描述,点击“Create project”按钮,完成项目的创建!
小白
在Gitlab中,作为项目的管理者,怎么保障项目的代码安全?
目前,Gitlab提供两种方法:
大神
01Gitlab支持针对不同的开发者角色,提供不同的权限,分为如下几种:
Guest – 无法读取代码
Reporter – 可以读取代码
Developer – 可以读写代码
Maintainer – 读写代码 + 项目的部分管理权限
Owner – 读写代码 + 项目的所有管理权限
02
在Gitlab中,可以设定保护特定的分支,只允许特定的角色(比如owner/maintainer)对特定的分支推送(push)代码或合并分支,设置如下图:
小白
作为一个开发者,怎么参与到一个项目的开发?
以下图sam_test_project项目为例,下面提供两种方式,让我们细细道来。
大神
壹
第一种,通过Eclipse方式。目前,低版本的Eclipse不自带Git插件,需要自行安装,Eclipse 2018-09以上,是自带Git插件的,需要注意的是它的运行需要1.8版本以上的JDK支持。
1
开发者登陆Gitlab,进入要参与的项目,点击右上角的“clone”按钮,拷贝对应的仓库地址(.git结尾的URI地址)。
02
打开Eclipse, 选择File ->import ->Git ->Projects from Git ->点击Next
03
选择Clone URI ->点击Next
04
在URI中粘贴你复制的Git仓库地址,Eclipse会自动弹出剩下的信息。同时在User中输入账户名,在password中输入密码,点击Next
05
进入分支选择页面后,这里选择的是dev分支,点击Next
06
配置本地项目存放路径,这里配置在云桌面的H盘
07
此时Git项目会自动下载,等项目下载的进度条加载好以后,选择第三个选项(Import as general project),点击Next。注:Import existing eclipse projects是导入一个存在的工程。
08
点击Finish, 可以看到完整的项目
09
修改完代码后,右键项目,选择Team->Commit
10
在Git Staging,把“Unstaged Changes”加入到Git 暂存区
11
输入commit message, 点击”Commit and Push”推送到远程Git仓库
12
点击close完成
贰
第二种,通过Git bash命令行方式克隆/提交代码:
01开发者登陆Gitlab,进入要参与的项目,点击右上角的“clone”按钮,拷贝对应的仓库地址(.git结尾的URI地址)。
02
在已安装了Git客户端的文件夹中,右键点击“Git Bash Here”,克隆项目代码到本地,如下图。
03
接着修改本地代码,并提交代码到远程仓库中,以修改dev分支的test.sh文件为例:
小白
那么,在Gitlab中,分支合并是怎么操作?
首先,登陆gitlab,创建合并请求,把dev分支合并到master分支,并可对比两个分支之间的文件和代码差异性。
大神
接着,项目的owner/maintainer收到合并请求,审阅代码变更并批准合并(merge)请求,最后dev分支被合并到master分支中。
大神
好啦,今天的介绍就到这里,相信通过以上的Q&A,大家都对Git及其使用有了初步了解了吧!更多Gitlab问题咨询或技术交流,请联系张海滨或赵少山。欢迎大家共同探讨学习。
— END—系统与非功能团队出品
作者:赵少山
编辑:方妍
往期精彩回顾
1. 项目中用到的策略模式
2. webpack4搭建react项目
3. 远程办公之“血肉长城”
4. Web响应式布局实践
5. 初识云原生
关注我们