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提供两种方法:

大神

01

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

  • 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.  初识云原生

关注我们

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

  1. 虚拟机centos7 git clone特别慢_从文件生命周期看GIT的提交流程

    上一篇GIT的理论知识比较枯燥无味,理论性较强,也是难以引起共鸣! 波罗学:谈谈版本管理GIT之理论与架构​zhuanlan.zhihu.com 紧接上篇,今天从实在操作方面说一下GIT使用中,使用最 ...

  2. git clone 多个_搭建自己的 Git 服务器

    根据 RhodeCode[1] 在 2016 年做过的一项分析报告 Version Control Systems Popularity in 2016[2],在如今的 VCS(版本控制系统)领域,G ...

  3. git clone 添加代理_用树莓派3搭建私有git代码仓库

    0.出发点 由于项目开发的规模和复杂度越来越大,有时候需要同时多人在不同的嵌入式linux上开发代码,在没有用git管理代码和文档前,很难同步代码和文档的版本,宝贵的代码存储也没有安全感. githu ...

  4. git clone 多个_软件测试知识点 | 测试过程常用的Git命令

    testkuaibao|软件测试自学公众号 点击上图进入软件测试面试题题库,面试题都是有相应的参考答案,希望对小伙伴们有所帮助 前言 目前,在版本控制系统中Git已经被广泛使用,并且很多技术团队也会逐 ...

  5. git钩子放服务器_如何使用Git 钩子来自动化开发和部署任务

    介绍 版本控制已成为现代软件开发的中心要求. 它允许项目安全地跟踪更改,启用撤销,完整性检查和协作等好处. 在git的版本控制系统,特别是,已由于其分散式架构,并在它可以使和转让方之间变化的速度看到广 ...

  6. git clone 之前,是否需要先 git init

    不需要 git clone是一个组合,clone会包含init,remote,fetch,checkout这些操作.自动创建 .git文件夹和 origin远程地址别名. (只有第一次拉取代码用 cl ...

  7. git clone出现fatal: HTTP request failed --git版本问题

    当git版本低于2.0版本时,在push或clone代码时容易出现"fatal: HTTP request failed"的问题. 当前,git的最新版本是2.33.1.但是,当我 ...

  8. 用git clone命令从gitlab上拉取公司项目操作步骤

    Begin 有两种方式Clone: Clone with SSH Clone with HTTPS 听说第二种方法比较复杂,这里介绍第一种配置SSH公私钥方法 配置公私钥方法 第一步:在gitlab上 ...

  9. git 设置有效目录_如何有效使用Git

    git 设置有效目录 The code was working yesterday but today it is not 该代码昨天有效,但今天却没有 The code got deleted 代码 ...

最新文章

  1. 使用Intellij IDEA 解决Java8的数据流问题
  2. Deep learning调参经验
  3. WOJ 1313 - K尾相等数
  4. 苹果airpods android,苹果AirPodsPro搭配Android手机实测:支持功能不够完整,购买前要认真考虑...
  5. 网络编程学习笔记(UDP的connect函数)
  6. IOS开发-通知与消息机制
  7. Webpack构建多页应用心得体会
  8. 【bzoj4994】[Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组
  9. 数据包捕获计算机网络实训,计算机网络-使用网络协议分析器捕捉和分析协议数据包...
  10. Java虚拟机学习 - 体系结构 内存模型(转载)
  11. VGG16迁移学习,实现医学图像识别分类工程项目
  12. Silverlight的资源
  13. 集体智慧编程Python
  14. 移动端web轮播图插件swiper,功能很强大
  15. 数据结构(十四)——二叉树
  16. 分析virtio-blk+qemu+spdk环境中virtio-blk不用执行virtqueue_kick操作通知后端处理IO的原因
  17. 近几个月Github上最热门的Java项目一览
  18. logback系列之四:输出日志到不同文件
  19. 安装archlinux+cinnamon笔记
  20. m031开发 新唐_基于新唐M031开发的激光测距仪方案

热门文章

  1. linux配置python环境变量_linux添加PYTHONPATH环境变量
  2. python是脚本语言、需要编译器编译执行_使用Notepad++编译运行C/C++/Python程序
  3. Elasticsearch Transient与Persistent的区别
  4. 一个超级牛X的Python可视化库,隔壁老奶奶都会用!
  5. 小体积神器!这款不到500KB的电脑软件,功能也太赞了!
  6. centos 安装jdk_CentOS 7 安装 Oracle JDK 8
  7. keil 在项目栏总有个叉_老股民的热心分享:均线金叉死叉买卖定式”,散户值得一看!...
  8. 拨号云服务器怎么自动配置网关_教你在阿里云创建增强型云网关
  9. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
  10. 面试必问:读写一致性,你需要思考的问题