git clone 多个_如何通过Git参与项目开发

1d5c9bd7eafeb516ec172e1cb7f1f6a9.gif

71d17bd87aca97cbb07f829ff95cb554.gif

Git介绍

QA& 9f560561ca64b4d747ebce6c992ea1ca.png

小白

16db5e1a061f6ab51fb65b79522710c9.png

Git 是什么?

Git是一个开源的免费的分布式版本管理系统,最初是由Linux内核发明人Linus Torvalds用于管理Linux内核开发而开发的。

84a9a74d43809ec2d5f1f3ef274020b7.png 96f0ba67d31fd0e0da96245401687bbf.png

大神

9f560561ca64b4d747ebce6c992ea1ca.png小白 16db5e1a061f6ab51fb65b79522710c9.png

Git的分布式是怎么样的?

相对于集中式的版本控制系统,每个开发者可以克隆,在本地机器上拷贝一个完整的git仓库,并可以提交代码到本地。

84a9a74d43809ec2d5f1f3ef274020b7.png 96f0ba67d31fd0e0da96245401687bbf.png大神 9f560561ca64b4d747ebce6c992ea1ca.png

小白

16db5e1a061f6ab51fb65b79522710c9.png

跟SVN比起来,Git的速度能快多少?

参见如下benchmark测试对比图,就可以清楚看出Git的速度了!

84a9a74d43809ec2d5f1f3ef274020b7.png 96f0ba67d31fd0e0da96245401687bbf.png

大神

dc1a9ee5af499e9587a96101ee8b28cb.png 9f560561ca64b4d747ebce6c992ea1ca.png

小白

16db5e1a061f6ab51fb65b79522710c9.png

Git的分支是什么?

分支(branch)是Git的核心概念之一,类似于CC的流,但又不相同。

84a9a74d43809ec2d5f1f3ef274020b7.png 96f0ba67d31fd0e0da96245401687bbf.png

大神

01ac5e367c3811670b5ff67aa2274538.gif

Git 支持创建多个分支用于不同的用途,比如默认的master分支用于生产环境,创建dev分支用于测试环境,其他的一些分支则用于各种功能特性的开发环境。各个分支之间是独立的,当开发者提交代码到专用开发分支时,不用担心污染到其他分支的代码,而且各个开发者之间可以并行开发,最后通过合并(merge)把代码合并到主干(master/dev)分支。

82091423600496d05d071bbb72ba612a.png 1efd46b8c910389517b5226eed249ec2.png 9f560561ca64b4d747ebce6c992ea1ca.png

小白

16db5e1a061f6ab51fb65b79522710c9.png

Git的暂存区(staging area)是什么?

暂存区是在提交(commit)代码前的一个中间区域,可以用这个图来说明。

84a9a74d43809ec2d5f1f3ef274020b7.png 96f0ba67d31fd0e0da96245401687bbf.png

大神

16cddd52b5da68631ae9c11648035096.png

1efd46b8c910389517b5226eed249ec2.png

4d4a3f6b88602619d6e457889bdce595.png

小白

da2edb64c8f43070dabed043ccef387b.png

Git相对于CC有哪些优势?

优势简直两只手都数不多来啊~例如↓↓↓

1a6629cc218fec9e20998c6cb7820e95.png 18246d7a938fa66bc15e4dd5f4a88215.png

大神

c02365b976c066e7739e553c23294977.gif
  • 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非常昂贵。

be39daf4a01f426ac3d36e965ce85646.png

Gitlab的使用

9f560561ca64b4d747ebce6c992ea1ca.png

小白

16db5e1a061f6ab51fb65b79522710c9.png

在Gitlab中,作为项目的管理者,怎么创建新的项目呢?

通常情况下,先创建群组,并把项目成员加入群组,接着可以在群组中创建新项目,具体操作是这样的:

84a9a74d43809ec2d5f1f3ef274020b7.png 96f0ba67d31fd0e0da96245401687bbf.png

大神

01

新建群组

da50caec3d9df389084bd7363ae245c8.png

022

群组命名

输入群组名称/描述,选择可见性级别(私有/内部/公开),注:群组URL不支持中文字符。

可见性级别:

※ 私有:仅限项目组的成员可访问

※ 内部:登陆用户可访问

※ 公开:无论登陆与否,都可以访问

1f17f9343c0fdbee9a5a299267d2da43.png

03

新建项目

在群组中,创建新项目

0c269676f4e326d2197a56f4687fec2e.png

04

项目命名

输入项目名称/描述,点击“Create project”按钮,完成项目的创建!

027e1013b1c0d1a8b2a694bec5600763.png1efd46b8c910389517b5226eed249ec2.png

4d4a3f6b88602619d6e457889bdce595.png

小白

da2edb64c8f43070dabed043ccef387b.png

在Gitlab中,作为项目的管理者,怎么保障项目的代码安全?

目前,Gitlab提供两种方法:

1a6629cc218fec9e20998c6cb7820e95.png 18246d7a938fa66bc15e4dd5f4a88215.png

大神

01

Gitlab支持针对不同的开发者角色,提供不同的权限,分为如下几种:

  • Guest – 无法读取代码

  • Reporter – 可以读取代码

  • Developer – 可以读写代码

  • Maintainer – 读写代码 + 项目的部分管理权限

  • Owner – 读写代码 + 项目的所有管理权限

02

在Gitlab中,可以设定保护特定的分支,只允许特定的角色(比如owner/maintainer)对特定的分支推送(push)代码或合并分支,设置如下图:

f6eb00e8d949439496057f9bb7072f16.png

1efd46b8c910389517b5226eed249ec2.png

4d4a3f6b88602619d6e457889bdce595.png

小白

da2edb64c8f43070dabed043ccef387b.png

作为一个开发者,怎么参与到一个项目的开发?

以下图sam_test_project项目为例,下面提供两种方式,让我们细细道来。

1a6629cc218fec9e20998c6cb7820e95.png 18246d7a938fa66bc15e4dd5f4a88215.png

大神

第一种,通过Eclipse方式。目前,低版本的Eclipse不自带Git插件,需要自行安装,Eclipse 2018-09以上,是自带Git插件的,需要注意的是它的运行需要1.8版本以上的JDK支持。

1

开发者登陆Gitlab,进入要参与的项目,点击右上角的“clone”按钮,拷贝对应的仓库地址(.git结尾的URI地址)。

f2830edfd9c3428e8206ba61c38e7677.png

02

打开Eclipse, 选择File ->import ->Git ->Projects from Git ->点击Next

b31930ef4ad3b629da50e0f3aead44e3.png

03

选择Clone URI ->点击Next

c7d91dc06e0a0fc558d9aff467e43f9f.png

04

在URI中粘贴你复制的Git仓库地址,Eclipse会自动弹出剩下的信息。同时在User中输入账户名,在password中输入密码,点击Next

f1befe7a522b74cdf043a23b816064ac.png

05

进入分支选择页面后,这里选择的是dev分支,点击Next

137349433dde2daf8b03135198d7bf43.png

06

配置本地项目存放路径,这里配置在云桌面的H盘

0c25c128497cfa299e2fff6c26e638ca.png

07

此时Git项目会自动下载,等项目下载的进度条加载好以后,选择第三个选项(Import as general project),点击Next。注:Import existing eclipse projects是导入一个存在的工程。

7a02d60b9b8e8adc3a0b1681718b7aed.png

08

点击Finish, 可以看到完整的项目

86b3956ddd0e6a1322702888ef414ee4.png

09

修改完代码后,右键项目,选择Team->Commit

592feea0094786ee91af28527b11053e.png

10

在Git Staging,把“Unstaged Changes”加入到Git 暂存区

2f3ab339c8ac6f343b26f5c5de49f617.png

11

输入commit message, 点击”Commit and Push”推送到远程Git仓库

fef3af7929ff6c7c643311b42e3211e8.png

12

点击close完成

3d312c04ed835729b59793e2b4878db8.png

第二种,通过Git bash命令行方式克隆/提交代码:

01

开发者登陆Gitlab,进入要参与的项目,点击右上角的“clone”按钮,拷贝对应的仓库地址(.git结尾的URI地址)。

f2830edfd9c3428e8206ba61c38e7677.png

02

在已安装了Git客户端的文件夹中,右键点击“Git Bash Here”,克隆项目代码到本地,如下图。

48def1d58e49c1cbf7516f3c6297d577.png

0b2600b590ad9d6222393c244549e6f7.png

03

接着修改本地代码,并提交代码到远程仓库中,以修改dev分支的test.sh文件为例:

f47560dca567634b3c0ec865445b6712.png

1efd46b8c910389517b5226eed249ec2.png 4d4a3f6b88602619d6e457889bdce595.png

小白

da2edb64c8f43070dabed043ccef387b.png

那么,在Gitlab中,分支合并是怎么操作?

首先,登陆gitlab,创建合并请求,把dev分支合并到master分支,并可对比两个分支之间的文件和代码差异性。

1a6629cc218fec9e20998c6cb7820e95.png 18246d7a938fa66bc15e4dd5f4a88215.png

大神

03f55e70ada33cdc0c110e693360fbb2.png

9d6bdd2c3d57c7bec2446be297947d44.png

接着,项目的owner/maintainer收到合并请求,审阅代码变更并批准合并(merge)请求,最后dev分支被合并到master分支中。

1a6629cc218fec9e20998c6cb7820e95.png 18246d7a938fa66bc15e4dd5f4a88215.png

大神

ae22ddb57bec64c5c2d9232333d3efc9.png

1efd46b8c910389517b5226eed249ec2.png

好啦,今天的介绍就到这里,相信通过以上的Q&A,大家都对Git及其使用有了初步了解了吧!更多Gitlab问题咨询或技术交流,请联系张海滨或赵少山。欢迎大家共同探讨学习。

6241c99fb515a52cada68d367d24d677.gif 4403d9c5430b0146c37a502b9f218ca6.png— END—

系统与非功能团队出品

作者:赵少山

编辑:方妍

往期精彩回顾

1.  项目中用到的策略模式

2.  webpack4搭建react项目

3.  远程办公之“血肉长城”

4.  Web响应式布局实践

5.  初识云原生

关注我们 25b149a957a9fea53b926eeae15dc5f2.png 1e5e3b1f6dd5227d7c075377f98bc320.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值