• 沒有找到結果。

保护分支管理_代码托管 CodeHub_用户指南_云端仓库管理_华为云

N/A
N/A
Protected

Academic year: 2022

Share "保护分支管理_代码托管 CodeHub_用户指南_云端仓库管理_华为云"

Copied!
179
0
0

加載中.... (立即查看全文)

全文

(1)

CodeHub-用户指南

文档版本 05

发布日期 2021-12-14

(2)

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址: https://www.huawei.com

客户服务邮箱:[email protected] 客户服务电话:4008302118

(3)

目 录

1 服务概述...1

2 开通代码托管服务... 5

3 Git 客户端安装配置...8

3.1 Git 客户端安装与配置... 8

3.2 Windows Git Bash 客户端... 8

3.3 Windows TortoiseGit 客户端... 9

3.4 Linux Git 客户端... 11

3.5 Mac Git 客户端... 12

4 设置 SSH 密钥/HTTPS 密码...13

4.1 概述... 13

4.2 SSH 密钥... 14

4.3 HTTPS 密码... 16

5 创建云端仓库...19

5.1 概述... 19

5.2 创建空仓库... 20

5.3 按模板新建仓库... 21

5.4 导入外部仓库...23

5.5 复刻(Fork)仓库... 25

6 克隆/下载云端仓库到本地...28

6.1 概述... 28

6.2 使用 SSH 协议克隆云端仓库到本地... 28

6.3 使用 HTTPS 协议克隆云端仓库到本地... 32

6.4 从浏览器下载代码包... 37

7 仓库迁移...39

7.1 概述... 39

7.2 将 SVN 代码仓库迁移至 CodeHub... 39

7.3 将基于 Git 的远程仓库导入 CodeHub... 44

7.4 将本地代码上传到 CodeHub... 46

8 浏览云端仓库...49

8.1 仓库列表... 49

(4)

8.2 查看仓库详情...50

8.3 在控制台中管理仓库文件... 50

8.4 查看仓库的统计信息... 55

8.5 查看仓库的提交网络... 56

9 关联云端仓库...58

10 云端仓库管理...61

10.1 仓库信息... 61

10.2 通知设置... 62

10.3 锁定仓库... 64

10.4 默认分支管理... 65

10.5 提交规则设置... 65

10.6 仓库加速... 67

10.7 复制仓库设置... 67

10.8 异地备份... 68

10.9 合并请求设置... 68

10.10 保护分支管理...70

10.11 设置 WebHook... 71

10.12 部署密钥... 73

10.13 配置 IP 白名单... 76

10.14 风险操作... 77

10.15 操作日志... 78

10.16 子模块管理(Git Submodule 操作)... 78

10.17 同步仓库... 81

11 提交代码到云端...83

11.1 创建提交... 83

11.2 加密传输与存储...86

11.3 查看提交历史... 96

11.4 在 Eclipse 提交代码到 CodeHub... 96

12 基于 CodeHub 的团队开发...110

12.1 分支管理... 110

12.2 标签管理... 120

12.3 分支合并评审...126

12.4 关联工作项... 130

12.5 解决代码提交的冲突...137

13 成员权限管理... 146

13.1 IAM 用户、项目成员与仓库成员的关系... 146

13.2 仓库成员管理...147

13.3 仓库成员权限...149

14 更多 Git 知识...152

14.1 Git 客户端使用... 152

(5)

14.2 使用 HTTPS 协议设置免密码提交代码... 155

14.3 TortoiseGit 客户端使用...157

14.3.1 TortoiseGit 客户端生成 PPK 文件...157

14.3.2 TortoiseGit 客户端创建 Git 版本库... 161

14.3.3 TortoiseGit 客户端 Clone 版本库...161

14.3.4 TortoiseGit 客户端 Push 版本库... 163

14.4 Git 客户端示例... 164

14.4.1 Git 客户端上传下载代码... 164

14.4.2 Git 客户端设置 Windows 下的字符编码... 165

14.4.3 Git 客户端修改文件名大小写后,如何提交到远端...166

14.4.4 Git 客户端设置系统的换行符转换... 167

14.4.5 Git 客户端提交中文名文件... 167

14.4.6 Git 客户端提交隐藏文件... 168

14.4.7 Git 客户端提交已被更改的文件... 168

14.5 Git 常用命令... 169

14.6 Git LFS 使用... 172

(6)

1 服务概述

代码托管(CodeHub)是遵循Git的基本运行模式的分布式版本管理平台,其具备安全 管控、成员/权限管理、分支保护/合并、在线编辑、统计服务等功能,旨在解决软件开 发者在跨地域协同、多分支并发、代码版本管理、安全性等方面的问题。

如果您计划开始一个新项目,那么您可以选择使用代码托管内置的仓库模板创建仓库 并开始开发,流程请参见从云端开始研发项目。

如果您本地正在开发一个项目,想使用代码托管服务来管理版本,可以将项目迁移到 云端,流程请参见将本地项目迁移到云端。

从云端开始研发项目

如果您全新开始一个项目,那么您可以选择使用代码托管服务为您提供的仓库模板来 创建项目并开始开发,其使用流程如下。

所涉及到的操作或知识如下:

5.3 按模板新建仓库

(7)

13.2 仓库成员管理

10 云端仓库管理

3 Git客户端安装配置

6 克隆/下载云端仓库到本地

12.1 分支管理

12.2 标签管理

11 提交代码到云端

12.3 分支合并评审

5.5 复刻(Fork)仓库

将本地项目迁移到云端

如果您本地正在开发一个项目,想使用代码托管服务来管理版本,那么您可以将本地 仓库绑定云端仓库并完成初始化推送,之后便可以使用分布式版本管理方式来继续开 发您的项目,其使用流程如下。

所涉及到的操作或知识如下:

5.2 创建空仓库

13.2 仓库成员管理

10 云端仓库管理

3 Git客户端安装配置

● 将本地仓库关联到云端

6 克隆/下载云端仓库到本地

12.1 分支管理

(8)

12.2 标签管理

11 提交代码到云端

12.3 分支合并评审

5.5 复刻(Fork)仓库

分布式版本管理

您的本地计算机与代码托管(CodeHub)中各有一个完整的代码仓库。

所有版本信息可同步到本地计算机,这样就可以在本地计算机查看所有版本历史。

可以离线在本地计算机提交,只需在连网时push到代码托管仓库即可。

由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可 以恢复所有的数据。

基本运行模式

代码托管(CodeHub)是基于Git的一种云端仓库服务,其遵循Git的工作模式。

● Git本地仓库中的数据有三种状态,分别是“已修改”、“已暂存”和“已提 交”。当您对仓库中的文件做出修改后,该文件状态为“已修改”,您可以通过 add命令将该修改追加到本地的暂存区,此时状态为“已暂存”,再通过commit 命令将修改提交到本地版本库进行管理,每次提交都会生成对应的版本和版本 号,通过版本号可以进行版本的切换、回滚。同一版本中还可以同时存在多个分 支、标签,每个分支、标签、每次提交又相当于独立的版本可以使用checkout进 行检出。

● 代码托管作为云端仓库服务(Remote),其除了具备Git本地仓库的基本特性 外,还作为各个本地仓库的远程版本库,并具备可配置的安全策略、权鉴等。

● 代码托管服务的云端仓库与Git本地仓交互的场景主要有以下四种:

– Clone:直接将远程仓库的主分支克隆到本地,作为本地仓库。

(9)

– Push:将本地仓库的修改推送到云端仓库。

– fetch:从云端仓库抓取版本到工作区。

– Pull:从云端仓库抓取版本到工作区并尝试与当前分支合并,如果失败,需要 手动解决文件冲突。

(10)

2 开通代码托管服务

开通场景

在DevCloud支持的区域内,各区域独立开通购买、独立计费。

2020年10月16日前,未在DevCloud某个区域下产生过费用的用户,按照新版计费规 则,需在该区域开通/购买DevCloud后才能使用软开相关服务。

在该区域内产生过费用的用户,延续旧版计费规则,可参考开通按需在该区域开通代 码托管(CodeHub)服务按需计费。

例如:

用户于2020年3月在“华北-北京四”购买了半年期的包月套餐。由于疫情影响业务,

套餐到期后关闭了DevCloud服务;2020年10月20日将重新启用DevCloud。

● 若用户仍使用华北-北京四,可以开通/购买旧版套餐,或单独开通代码托管服务 使用。

● 若用户使用其它区域,则需开通/购买DevCloud新版计费。

开通按需

代码托管服务开通按需计费后,将每小时统计使用量并计费,开通的操作步骤如下。

步骤1 登录DevCloud控制台,在左侧导航中选择“代码托管”,单击“开通按需”。

(11)

步骤2 查看并确认服务开通详情,阅读、勾选相关服务声明后,单击页面右下角“立即开 通”,在弹框中单击“确认”。

步骤3 页面右上角提示开通进行中,成功开通后系统自动返回控制台。

在“开通记录”页签可查看服务开通记录。

----结束

关闭服务

● 当您不再使用代码托管服务,由于存储空间及用户为按小时计费,为了避免浪费 资源,您可以关闭本服务。本服务关闭后,将不再产生费用,如果您需要再次使 用,请重新开通。

● 关闭服务会将您已有的仓库资源释放,您上传的代码将无法被恢复,请在对仓库 备份之后,慎重操作。

步骤1 登录DevCloud控制台,在左侧导航中单击“代码托管”。

步骤2 选择“开通记录”页签,单击操作列“关闭服务”

(12)

步骤3 在弹框中输入“关闭服务”,单击“确认”。

步骤4 页面提示“已成功取消代码托管服务”,开通记录状态显示为“已关闭”。

----结束

(13)

3 Git 客户端安装配置

3.1 Git客户端安装与配置 3.2 Windows Git Bash客户端 3.3 Windows TortoiseGit客户端 3.4 Linux Git客户端

3.5 Mac Git客户端

3.1 Git 客户端安装与配置

代码托管基于Git工具,开发人员的本地环境需要安装Git Bash或TortoiseGit等Git客户 端工具,实现与代码托管服务的连接。后续章节介绍Git Bash、TortoiseGit的安装与简 易配置,其中Git客户端支持在Windows、linux、mac操作系统中运行。

如果您已经安装过Git客户端并且已经配置了签名和邮箱,可跳过以下章节。

3.2 Windows Git Bash客户端

3.3 Windows TortoiseGit客户端

3.4 Linux Git客户端

3.5 Mac Git客户端 说明

代码托管暂不支持使用github desktop进行管理。

3.2 Windows Git Bash 客户端

如果您不熟悉Git命令,推荐使用3.3 Windows TortoiseGit客户端的可视化操作界 面,如果您熟悉常用的Git命令,Git Bash将会是您Windows上更加简洁、高效的客户 端。

1. 安装Git Bash客户端。

a. 打开Git Bash官网下载链接,根据您的操作系统位数下载32位/64位的安装 包。

(14)

b. 双击运行安装包,在弹出的安装窗口中依次单击“下一步(Next)”,最后 单击“安装(Install)”完成安装。

2. 打开Git Bash客户端。

单击Windows“开始”图标,在“开始”搜索栏中输入“Git Bash”,单击回车 即可打开Git Bash客户端,建议将其固定到Windows的任务栏中。

3. 配置Git Bash客户端。

配置用户名和邮箱,在Git Bash中输入以下命令行:

git config --global user.name "<您的用户名>"

git config --global user.email "<您的邮箱>"

配置好之后可以使用以下命令行查看配置:

git config -l 说明

● 用户名可以由字母、数字、常用符号组成,如为方便管理,可以考虑配置成与代码托管 服务相同的用户名;

● 邮箱请按照标准邮箱格式填写;

● git config命令的–global参数,用了这个参数,表示您这台机器上所有的Git仓库都会使 用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址;

3.3 Windows TortoiseGit 客户端

如果您不熟悉常用的Git命令,或者是从熟悉的SVN客户端(TortoiseSVN)迁移过来 的,那么TortoiseGit客户端将是您更好的选择。Git中的TortoiseGit客户端相当于SVN 中的TortoiseSVN客户端。

前置条件

打开Git Bash官网下载链接,根据您的操作系统位数下载32位/64位的安装包,双击运 行安装包,在弹出的安装窗口中依次单击“下一步(Next)”,最后单击“安装

(Install)”完成安装。

安装与第一次启动

1. 打开TortoiseGit官网下载链接,根据您的操作系统位数下载32位/64位的安装 包。

2. 双击运行安装包,在弹出的窗口中依次单击“Next”,然后单击“Install”即可 完成安装,最后单击“Finish”即会运行第一次启动引导。

3. 在弹出的第一次启动引导中,会有Language语言选择、Git可执行路径配置(自 动填充可用的Git路径)、配置用户名和邮箱,保持默认依次单击Next完成即可。

语言包(可选)

TortoiseGit的安装包默认为英文,可以从TortoiseGit官网下载链接下载语言包

(Language Packs)。

这里选择Chinese simplified语言包,下载对应的32位/64位的语言包然后双击运行,

在完成之前勾选“Configure TortoiseGit to use this language”即可完成汉化。

(15)

配置

TortoiseGit同样需要一个密钥来和代码托管服务端进行鉴权认证,密钥生成步骤如 下:

1. 单击Windows开始图标搜索PuttyGen并打开,在打开的窗口中单击

“Generate”,即可生成密钥。

(16)

说明

PuTTYgen是TortoiseGit自带的一款功能强大并且小巧易用的公钥私钥生成工具软件,安 装完TortoiseGit后即可在Windows开始图标搜索到PuTTYgen。需要注意的是,TortoiseGit 与PuTTY都有自带PuTTYgen,是不会冲突的。

2. 密钥生成后就可以分别将公钥、私钥进行存储。

– 单击“Save private key”在弹出的窗口中输入文件名保存为私钥文件。

– 单击“Save public key”在弹出的窗口中输入文件名保存为公钥文件。

3. 将公钥绑定到云端仓库。

4. 将私钥绑定到本地客户端。

单击Windows开始图标搜索Pageant并打开,单击“Add Key”,并选择您生成的 私钥文件即可。

3.4 Linux Git 客户端

● Debian/Ubuntu系统

在终端中输入以下命令行安装:

apt-get install git

● Fedora/Centos/Redhat系统 在终端中输入以下命令行安装:

yum install git

(17)

● 更多操作系统请参见官网链接Download for Linux and Unix。

3.5 Mac Git 客户端

● Mac上安装Git最简单的方法是安装 Xcode Command Line Tools;

● 在Mavericks(10.9)或更高版本的系统中,于Terminal里尝试首次运行Git命令即 可,如果没有安装过命令行开发者工具,将会提示您安装;

● 如果您想安装更新的版本,可以使用二进制安装程序,官方维护的OSX Git 安装 程序可以在 Git 官方网站下载,网址为https://git-scm.com/download/mac。

(18)

4 设置 SSH 密钥/HTTPS 密码

4.1 概述 4.2 SSH密钥 4.3 HTTPS密码

4.1 概述

什么是 SSH 密钥/HTTPS 密码

当您需要将代码推送到云端仓库或从云端仓库下拉代码时,云端仓库需要验证您的身 份与权限,SSH和HTTPS是对代码托管服务进行远程访问的两种身份验证方式。

4.2 SSH密钥是在本地计算机与您账号下的代码托管服务之间建立安全连接。

在一台本地计算机上配置了SSH密钥并添加公钥到代码托管服务中后,所有该账 号下的代码仓库与该台计算机之间都可以使用该密钥进行连接。

不同的用户通常使用不同的电脑,在使用SSH方式连接代码仓库前需要在自己电 脑生成自己的SSH密钥,并设置到代码托管服务中。

4.3 HTTPS密码是HTTPS协议方式下载、上传时使用的用户凭证。

每个开发者,只需要设置一次密码,所有该项目下的仓库都会生效。

在本产品中,HTTPS协议所支持的单次推包大小为500M,需传输大于500M时,

请使用SSH方式。

因为联邦账号无法绑定邮箱,所以无法使用HTTPS协议。

说明

● 使用其中任何一种方式都可以进行代码的上传下载,密钥(密码)的设置根据您选择的连接 方式设定即可。

(19)

4.2 SSH 密钥

什么是 SSH 密钥

当您需要将代码推送到云端仓库或从云端仓库下拉代码时,云端仓库需要验证您的身 份与权限,SSH是对代码托管服务进行远程访问的身份验证方式。

● SSH密钥是一种加密的网络传输协议,在电脑与您账号下的代码托管服务之间建 立安全连接。

● 在一台电脑上配置了SSH密钥并添加公钥到代码托管服务中后,所有该账号下的 代码仓库与该台电脑之间都可以使用该密钥进行连接。

● 不同的用户通常使用不同的电脑,在使用SSH方式连接代码仓库前需要在自己电 脑生成自己的SSH密钥,并设置到远程仓库中。

生成并设置您的 SSH 密钥

以下介绍生成公钥和绑定的方法。

步骤1 安装3.2 Windows Git Bash客户端 步骤2 检查您的计算机是否已经生成了密钥。

在本地Git客户端中执行命令,尝试显示ssh密钥。

cat ~/.ssh/id_rsa.pub

● 如果提示“No such file or directory”如下图,则说明您这台计算机没有生成过 SSH密钥,请从步骤3向下执行以生成并配置SSH密钥。

● 如果至少返回了一组密钥如下图,则说明您这台计算机已经生成过SSH密钥,如 果想使用已经生成的密钥请直接跳到步骤4,如果想重新生成密钥,请从步骤3向 下执行。

● 如果您想在一台计算机上同时管理多个密钥,请参考如何在一台电脑上,配置多 个SSH Key。

步骤3 生成SSH密钥

在本地Git客户端中执行命令以生成新的SSH密钥:

ssh-keygen -t rsa -C "Your SSH key comment"

(20)

请按照下面提示操作,如上图所示为密钥生成成功。

①首先会提示您输入密钥的存储地址,,一般直接回车使用默认即可。

②如果您本地路径下已经有密钥,会询问您是否将其覆盖,填写“n”即选择不覆盖,

会退出本次密钥生成操作,填写“y”继续生成密钥,本案例填写“y ”并回车。

③接下来会提示您为密钥设置密码和重新输入密码,如果不想设置密码,直接回车即 可。

注意

● 如果设置密码,则生成的私钥文件是AES-128-CBC加密后存储的。(建议使用)

● 如果直接回车,不输入密码,则生成的私钥文件id_rsa是明文存储在本地的,请妥 善保管。

步骤4 复制SSH公钥到剪切板

根据您的操作系统,选择在本地执行命令,可将SSH公钥复制到您的剪切板,以 Windows为例,无回显则为复制成功

Windows:

clip < ~/.ssh/id_rsa.pub

Mac:

pbcopy < ~/.ssh/id_rsa.pub

Linux (xclip required):

xclip -sel clip < ~/.ssh/id_rsa.pub

步骤5 登录您的代码托管服务首页(注意:切换到您使用的区域),单击“设置我的SSH密 钥”,弹出“SSH密钥管理”页面。

(21)

步骤6 在“SSH密钥管理”页面,单击“添加SSH密钥”,弹出“添加SSH密钥”页面。

步骤7 在“标题”中为您的新密钥起一个名字、将您在步骤4中复制的SSH公钥粘贴进“密 钥”中,勾选“我已阅读并同意 《隐私政策声明》 和 《软件开发服务使用声 明》”,单击“确定”,页面会提示您操作成功。

说明

● 同一个SSH密钥不能重复添加,如果添加失败,请检查您是否已经添加过这个密钥、粘贴时 前后是否有多余的空格。

● 添加成功后,可以在“SSH密钥管理”页面查看到您添加的密钥,当您确认不再使用时,可 以将其删除。

● SSH密钥与仓库部署密钥的区别为,前者与用户/计算机关联,后者与仓库关联;SSH密钥对 仓库有读写权限,部署密钥对仓库是只读权限。

----结束

验证 SSH 密钥是否绑定成功

当SSH密钥绑定成功后,您可以在客户端对您有访问权限的仓库进行一次SSH-clone操 作,如果克隆成功了,则说明密钥设置成功。

说明

如果是第一次使用ssh克隆仓库到本地,客户端会弹出“The authenticity of host *.*.com can't be established. RSA key...(yes/no)?”的提示,输入yes后表示信任方可继续。

4.3 HTTPS 密码

什么是 HTTPS 密码

当您需要将代码推送到云端仓库或从云端仓库下拉代码时,云端仓库需要验证您的身 份与权限,HTTPS是对代码托管服务进行远程访问的身份验证方式。

● HTTPS密码是HTTPS协议方式下载、上传时使用的用户凭证。每个开发者,只需 要设置一次密码,与仓库无关。

● HTTPS密码的字符范围规则是:仅支持数字、大小写字母及特殊字符,且至少包 含两种、不能与登录用户名或者倒序的相同、长度为8-32位。

● HTTPS密码要妥善保存,不要外传,并定期更换,以免出现安全风险。如果忘记 用户名密码,设置新的HTTPS密码即可。

获取 HTTPS 密码

首次登录时需要初始设置密码。

(22)

您可以随时更改HTTPS密码,其步骤如下。

步骤1 登录您的代码托管服务首页(注意:切换到您使用的区域),单击“设置我的HTTPS 密码”,跳转到“HTTPS密码管理”页面。

步骤2 单击“自行设置密码”,再单击“修改”进入“重设密码”页面。(如果您之前自主 设置过HTTPS密码并正在使用,直接单击“修改”)

步骤3 填写新密码与邮箱验证码,勾选“我已阅读并同意 《隐私政策声明》 和 《软件开发 服务使用声明》”,单击“保存”页面会提示操作成功。

----结束 说明

● 您随时可以单击“设置为与华为云登陆密码相同”来重置密码,同时也可随时再次自定义密 码。

● 若升级到华为账号,租户级的“设置为与华为云登陆密码相同”功能将不再获得支持(子账 户级仍然有效);

● 密码重设后, 重新生成仓库凭证,否则不能与云端仓库交互。

● 本产品中HTTPS协议所支持的最大单次推包大小为500M,需传输大于500M时,请使用SSH 方式。

● 因为联邦账号无法绑定邮箱,所以无法使用HTTPS协议。

验证 HTTPS 密码是否生效

当设置好HTTPS密码后,您可以在客户端对您有访问权限的仓库进行一次HTTPS- clone操作,会弹出对话框要求你输入账号、密码,填写后克隆成功,则说明密码设置 成功。

相关常见问题

● 当主账号(账号和用户名一样)设置HTTPS密码时可以只写账号

● 如何使用HTTPS协议设置免密码提交代码?

● 重新生成仓库凭证:

clone失败,并提示,“The project you were looking for could not be found”,此时您需要重新生成凭证,并检查白名单。

– 密码错误,请删除该云端仓库的凭证(以Windows为例“控制面板 > 用户账 户 > 管理Windows 凭据 > 普通凭据”),并使用HTTPS方式再次克隆,在 弹出的窗口中输入正确的账号、密码即可。

(23)

– 检查IP白名单。注意,在未配置白名单时,全部IP均可访问,如果配置了则 只允许名单内的IP访问。

(24)

5 创建云端仓库

5.1 概述 5.2 创建空仓库 5.3 按模板新建仓库 5.4 导入外部仓库 5.5 复刻(Fork)仓库

5.1 概述

每个代码仓库的容量上限和LFS存储量上限都是2GB,目前代码托管服务提供以下几种 仓库创建方式:

5.2 创建空仓库,适用于本地有仓库,需要将本地仓库同步到云端的场景。

5.3 按模板新建仓库,使用代码托管服务提供的模板创建,适用于本地没有仓库,

希望按模板初始化一个仓库的情景。

● 导入外部仓库,用于将其它云端仓库导入到代码托管服务中,也可以将代码托管

服务中一个区域的仓库导入到另一个区域(10.8 异地备份),导入后的仓库与源 仓库彼此独立。

– 适用情景一:gitee、github仓库迁移、项目迁移到华为云代码托管服务。

– 适用情景二:使用DevCloud的用户,希望将项目迁移到其它区域。

5.5 复刻(Fork)仓库基于目前已有的代码托管云端仓库复制,复制出的仓库可 以将修改内容合并回源仓库。

– 适用情景一:希望基于历史项目开展新项目,又不想破坏历史项目仓库结 构。

(25)

– 适用情景二:组织内项目开源。

须知

单个仓库容量不能超出2G,超出时仓库将不能正常使用,无法扩容。

仓库常用设置

10.4 默认分支管理

10.5 提交规则设置

10.9 合并请求设置

10.10 保护分支管理

10.13 配置IP白名单

● 了解更多

5.2 创建空仓库

适用于本地有仓库,需要将本地仓库同步到云端的场景。在代码托管服务控制台创建 空仓库的步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 单击“普通新建”按钮,跳转到“普通新建仓库-详情”页面,填写仓库基本信息。

5-1 创建空仓库参数说明 字段名称 是

否 必 填

备注说明

代码仓库名

称 是 ● 以字母、数字、下划线开头,名称还可包含点和连字符。

归属项目 是 ● 仓库必须挂在项目下。

● 如果在项目内新建仓库则默认选择该项目,页面会隐去“归 属项目”这个字段。

● 如果账号下没有项目或者在项目选择框中选择“新建项目”

会先弹出“快捷新建项目”页面,这时建立的项目是basic项 目。

(basic项目,只能使用代码托管、代码检查服务,其它服务默 认不开通,需要手动去项目设置页更改才能变成基础项目)。

描述 否 为您的仓库填写描述。

选择gitignore 否 会根据您的选择生成.gitignore文件。(什么是gitignore?)

(26)

字段名称 是 否 必 填

备注说明

权限设置 否 可选择:

● 允许项目内人员访问仓库。

选择后会将项目中的项目经理、开发人员自动设为仓库的管 理员、仓库普通成员。当项目新增这两个角色时,也会自动 同步到已经存在的仓库中。

● 允许生成README文件。

您可以通过编辑README文件,记录项目的架构、编写目的 等信息,相当于对整个仓库的一种注释。

● 自动创建代码检查任务(免费)。

仓库创建完成后在代码检查任务列表,可看到对应仓库的检 查任务。(注意切换到仓库所在区域)

是否公开 是 可选择

● 私有。

仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代 码。

● 公开只读。

仓库对所有华为云用户公开只读,但不出现在仓库列表及搜 索中,可以选择开源许可证作为备注。

步骤3 单击“确定”按钮,完成仓库新建,跳转到仓库列表。

----结束

5.3 按模板新建仓库

使用代码托管服务提供的模板新建仓库,适用于本地没有仓库,希望按模板初始化一 个仓库的情景。在代码托管服务控制台按模板新建仓库的步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 单击“普通新建”旁的 ,在扩展框中选择“按模板新建”,跳转到“选择模板”

页面。

步骤3 “选择模板”页面支持模糊查询,根据您的需求选中某个模板。

步骤4 单击“下一步”按钮,进入“基本信息”页面,填写仓库基本信息。

(27)

5-2 按模板新建仓库的参数说明 字段名称 是

否 必 填

备注说明

代码仓库名 称

是 ● 以字母、数字、下划线开头,名称还可包含点和连字符。

归属项目 是 ● 仓库必须挂在项目下。

● 如果在项目内新建仓库则默认选择该项目,页面会隐去“归 属项目”这个字段。

● 如果账号下没有项目或者在项目选择框中选择“新建项目”

会先弹出“快捷新建项目”页面,这时建立的项目是basic项 目。

(basic项目,只有代码托管、代码检查功能,其它功能都不开 通也不显示,需要手动去项目设置页更改才能变成基础项 目)。

描述 否 为您的仓库填写描述。

选择gitignore 否 会根据您的选择生成.gitignore文件。(什么是gitignore?)

权限设置 否 可选择:

● 允许项目内人员访问仓库。

选择后会将项目中的项目经理、开发人员自动设为仓库的管 理员、仓库普通成员。当项目新增这两个角色时,也会自动 同步到已经存在的仓库中。

● 允许生成README文件。

您可以通过编辑README文件,记录项目的架构、编写目的 等信息,相当于对整个仓库的一种注释。

● 自动创建代码检查任务(免费)。

仓库创建完成后在代码检查任务列表,可看到对应仓库的检 查任务。(注意切换到仓库所在区域)

是否公开 是 可选择

● 私有。

仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代 码。

● 公开只读。

仓库对所有华为云用户公开只读,但不出现在仓库列表及搜 索中,可以选择开源许可证作为备注。

步骤5 单击“确定”按钮,完成仓库新建,跳转到仓库列表页。

----结束

按模板新建的仓库将包含模板预置的仓库文件结构。

(28)

说明

按模板新建时,仓库的类型会根据选择的模板的仓库类型自动配置。

按模板新建的仓库将包含模板预置的仓库文件结构。

5.4 导入外部仓库

用于将其它云端仓库导入到代码托管服务中,也可以将代码托管服务中一个区域的仓 库导入到另一个区域(10.8 异地备份),导入后的仓库与源仓库彼此独立。

在代码托管服务控制台导入外部仓库的步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 单击“普通新建”旁的 ,在扩展框中选择“导入外部仓库”,弹出“填写外部仓 库信息”页面。

外部仓库可以是Git远程仓库(HTTPS)或SVN。

须知

导入时,源仓端口限制为:80、443,以及大于1024的端口。

目前完全支持的源站地址包括:GitHub、Gitee、GitLab、SVN China。如果使用其它 源站地址导入失败,请联系技术支持确认源站白名单。

步骤3 (可选,开源仓库不需要填写)填写源仓库访问的用户名和密码。

步骤4 单击“下一步”按钮,进入“导入外部仓库-仓库详情”页面,填写仓库基本信息。

5-3 导入外部仓库时所需填写字段 字段名称 是

否 必 填

备注说明

代码仓库名 称

是 ● 以字母、数字、下划线开头,名称还可包含点和连字符。

● 默认为源仓库名称。

归属项目 是 ● 仓库必须挂在项目下。

● 如果在项目内新建仓库则默认选择该项目,页面会隐去“归 属项目”这个字段。

● 如果账号下没有项目或者在项目选择框中选择“新建项目”

会先弹出“快捷新建项目”页面,这时建立的项目是basic项 目。

(basic项目,只有代码托管、代码检查功能,其它功能都不开 通也不显示,需要手动去项目设置页更改才能变成基础项 目)。

描述 否 为您的仓库填写描述。

(29)

字段名称 是 否 必 填

备注说明

仓库设置 否 ● 只有开源项目(不需要用户名密码)导入时才会出现这个配 置项。

● 勾选后定时同步导入仓库的默认分支,每天自动从源仓库导 入仓库的默认分支;仓库将成为只读镜像仓库,不能写入。

并且只同步当前创建仓库的默认分支对应的第三方仓库的分 支。(暂不支持私有镜像仓同步)

● 导入后可在仓库详情中的 “设置 > 基础设置 > 仓库同步”

中关闭、开启定时同步镜像仓。

权限设置 否 可选择:

● 允许项目内人员访问仓库。

选择后会将项目中的项目经理、开发人员自动设为仓库的管 理员、仓库普通成员。当项目新增这两个角色时,也会自动 同步到已经存在的仓库中。

● 自动创建代码检查任务(免费)。

仓库创建完成后在代码检查任务列表,可看到对应仓库的检 查任务。(注意切换到仓库所在区域)

是否公开 是 可选择

● 私有。

仓库仅对仓库成员可见,仓库成员可访问仓库或者提交代 码。

● 公开只读。

仓库对所有华为云用户公开只读,但不出现在仓库列表及搜 索中,可以选择开源许可证作为备注。

步骤5 单击“确定”按钮,完成仓库导入,跳转到仓库列表页。

----结束 说明

● 仓库导入超时时间为30min。如果导入超时,建议使用客户端clone/push来处理。

● 导入的内容中不包含Git LFS对象。

● 导入的仓库会比其它仓库多一个10.17 同步仓库功能。

(30)

5.5 复刻(Fork)仓库

Fork 的应用场景

Fork可基于某个仓库镜像出一个一样的仓库,并能将镜像仓库中的修改请求合并回源 仓库,当合并未发生时,镜像仓、源仓库的修改都不会对彼此产生影响

可见Fork特别适用于大型项目包含众多子项目时的开发场景,如下图所示,复杂的开 发过程都只发生在镜像仓中,并不会影响到项目版本仓库(源仓库),只有确认完成的 新特性才会请求合并回项目版本仓库。

所以可以认为Fork是一种团队协作模式。

(31)

fork 与导入外部仓库的区别

fork与导入外部仓库的本质都是仓库的复制,其主要区别在于操作后源仓库与复制出 仓库的联动关系不同,详细如下:

fork:

– fork只应用于代码托管平台内的仓库间复制。

(32)

– fork时,会基于源仓库的当前版本复制出一个一样的副本仓库,您在副本仓 库的修改,可以申请合并(可以理解为一种跨仓库的分支合并)回源仓库,

但副本仓库不能再获取源仓库的更新。

● 导入外部仓库:

– 导入外部仓库不仅可以将其它版本管理平台的仓库进行导入(主要针对基于 Git、SVN存储的托管平台),也可以导入代码托管服务自己的仓库。

– 导入外部仓库时,也会基于源仓库的当前版本复制出一个一样的副本仓库,

所不同的是,副本仓库不能向源仓库提交合并申请,但是副本仓库可以随时 拉取源仓库的默认分支,以起到获取最新版本的作用。

如何 fork 仓库

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 单击“代码仓”列的“仓库名称”进入仓库。

步骤3 单击右上角的“fork”按钮,唤出“fork代码仓库”窗口,选择项目、填写仓库名称。

单击“确定”按钮,即可完成fork操作。

----结束

如何将 fork 仓库中的修改合入回源仓库

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入副本仓库。

步骤3 切换到“合并请求”页签。

步骤4 单击“新建合并请求”按钮,弹出“新建合并请求”页面。

步骤5 “从”字后面固定是本仓库,可选择分支作为要请求合并的分支。

“到”字后面注意要选择为该仓库的源仓库,并选择要合入到的分支。

步骤6 单击“下一步”按钮,进入到新建合并请求页面,其后面的操作流程与仓库内部的分 支合并评审完全一致。

----结束 说明

跨仓库的合并请求隶属于源仓库,只能在源仓库的“合并请求”页签中看到,在副本仓库(请求 发起方仓库)中看不到,因此选择的合入人和评审人需要是源仓库的人员。

(33)

6 克隆/下载云端仓库到本地

6.1 概述

6.2 使用SSH协议克隆云端仓库到本地 6.3 使用HTTPS协议克隆云端仓库到本地 6.4 从浏览器下载代码包

6.1 概述

除了8.3 在控制台中管理仓库文件外,基于Git的代码托管服务,还支持将仓库文件下 载到本地进行文件的操作。

首次将仓库克隆/下载到本地的方式主要分为以下三种:

6.2 使用SSH协议克隆云端仓库到本地;

6.3 使用HTTPS协议克隆云端仓库到本地;

6.4 从浏览器下载代码包;

6.2 使用 SSH 协议克隆云端仓库到本地

使用 SSH 协议在 Git Bash 客户端克隆代码

本节内容描述如何使用Git Bash客户端克隆代码托管服务的云端仓库到本地环境中。

步骤1 下载并安装Git Bash客户端。

步骤2 设置SSH密钥。

步骤3 获取仓库地址。(没有仓库?如何新建仓库?)

在仓库主页中,点击“克隆/下载”按钮,获取SSH地址,通过这个地址,可以在本地 计算机连接云端仓库。

步骤4 打开Git Bash客户端。

在本地计算机上新建一个文件夹用于存放代码仓库,在空白处单击鼠标右键,打开Git Bash客户端。

(34)

说明

克隆仓库时会自动初始化,无需执行init命令。

步骤5 输入如下命令,克隆云端仓库。

git clone 仓库地址

命令中“仓库地址”即步骤3中获取的SSH地址。

如果您是第一次克隆仓库,会询问您是否信任远程仓库,输入“yes”即可。

执行成功后,您会看到多出一个与您在云端新建的仓库同名的文件夹,并且其中有一 个隐藏的.git文件夹,则说明克隆仓库成功。

步骤6 此时您位于仓库上层目录,执行如下命令,进入仓库目录。

cd 仓库名称

进入仓库目录,可以看到此时Git默认为您定位到master分支。

----结束 说明

客户端在git clone 代码仓库时失败的原因排查:

● 确保您的网络可以访问代码托管服务。

请在git客户端使用如下测试命令验证网络连通性。

ssh -vT [email protected]

如果返回内容含有“connect to host codehub.devcloud.huaweicloud.com port 22:

Connection timed out”,如下图所示,则您的网络被限制,无法访问代码托管服务,请求 助您本地所属网络管理员。

● 请检查建立的SSH密钥配对关系,必要时重新生成密钥并到代码托管控制台进行配置。

● 检查IP白名单。注意,在未配置白名单时,全部IP均会放行,如果配置了则只允许名单内的 IP访问。

使用 SSH 协议在 TortoiseGit 客户端克隆代码

本节内容描述如何使用TortoiseGit客户端克隆代码托管服务的云端仓库到本地环境 中。

步骤1 下载并安装TortoiseGit客户端。

步骤2 获取仓库地址。(没有仓库?如何新建仓库?)

在仓库主页中,点击“克隆/下载”按钮,获取SSH地址,通过这个地址,可以在本地 计算机连接云端仓库。

(35)

步骤3 进入您的目录下,右键选择“Git克隆”菜单选项,如下图所示。

步骤4 在弹出的窗口中将上述复制的SSH地址粘贴到URL输入框中,勾选“加载Putty密钥”

并选择私钥文件,最后单击“确定”,如下图所示。

(36)

步骤5 单击“确定”之后即开始克隆仓库,如果您是第一次克隆TortoiseGit客户端会询问您 是否信任远程仓库,单击“是”即可,如下图所示。

步骤6 克隆用时受仓库大小影响,克隆的动作如下图所示。

(37)

----结束

使用 SSH 协议在 Linux 或 Mac 中克隆仓库

在配置完3.4 Linux Git客户端或3.5 Mac Git客户端环境后,Linux或Mac上Git客户端 的克隆操作和使用SSH协议在Git Bash客户端克隆代码的操作完全一样。

6.3 使用 HTTPS 协议克隆云端仓库到本地

使用 HTTPS 协议从 Git Bash 客户端克隆代码

本节内容描述如何使用Git Bash客户端克隆代码托管服务的云端仓库到本地环境中。

须知

本产品中HTTPS协议所支持的最大单次推包大小为500M,需传输大于500M时,请使 用SSH方式。

因为联邦账号无法绑定邮箱,所以无法使用HTTPS协议。

步骤1 下载并安装Git Bash客户端。

步骤2 设置HTTPS密码。

步骤3 进入代码托管首页,单击仓库列表中的仓库名进入仓库详情页,单击右侧导航栏克隆/

下载按钮,复制访问方式中的HTTPS链接,如下图所示。

(38)

步骤4 打开Git Bash客户端进入您的目录下,输入以下命令进行仓库克隆,其中第一次克隆 需要您填写用户名(账号名/用户名)和HTTPS密码。

git clone <您的HTTPS下载链接>

步骤5 (账号名/用户名)和HTTPS密码输入完成后,即可完成仓库克隆,如下图所示。

步骤6 此时您位于仓库上层目录,执行如下命令,进入仓库目录。

cd 仓库名称

进入仓库目录,可以看到此时Git默认为您定位到master分支。

----结束

(39)

说明

客户端在git clone 代码仓库时失败的原因排查:

● 确保您的网络可以访问代码托管服务。

请在git客户端使用如下测试命令验证网络连通性。

ssh -vT [email protected]

如果返回内容含有“connect to host codehub.devcloud.huaweicloud.com port 22:

Connection timed out”,如下图所示,则您的网络被限制,无法访问代码托管服务,请求 助您本地所属网络管理员。

● 请确认HTTPS密码,必要时重新设置密码。

● 检查IP白名单。注意,在未配置白名单时,全部IP均会放行,如果配置了则只允许名单内的 IP访问。

使用 HTTPS 协议在 TortoiseGit 客户端克隆代码

本节内容描述如何使用TortoiseGit客户端克隆代码托管服务的云端仓库到本地环境 中。

步骤1 下载并安装TortoiseGit客户端。

步骤2 设置HTTPS密码。

步骤3 进入代码托管首页,单击仓库列表中的仓库名进入仓库详情页,单击右侧导航栏克隆/

下载按钮,复制访问方式中的HTTPS链接,如下图所示。

步骤4 进入您的目录下,右键在弹出的菜单选项中选择“Git克隆”,如下图所示。

(40)

步骤5 在弹出的窗口中将上述复制的HTTPS地址粘贴到URL输入框中,然后单击“确定”,

如下图所示。

(41)

步骤6 单击“确定”之后即开始克隆仓库,如果您是第一次进行克隆TortoiseGit客户端会要 求您输入用户名和HTTPS密码,如下图所示。

步骤7 开始克隆之后稍后即可完成,如下图所示。

(42)

----结束

使用 HTTPS 协议在 Linux 或 Mac 中克隆仓库

在配置完3.4 Linux Git客户端或3.5 Mac Git客户端环境后,Linux或Mac上Git客户端 的克隆操作和使用HTTPS协议从Git Bash客户端克隆代码的操作完全一样。

6.4 从浏览器下载代码包

除了克隆以外,代码托管服务同时支持将仓库代码打包下载到本地。

使用直接下载方式获取的代码仓库文件与云端仓库没有关联关系,不能将内容回推云 端仓库。

其操作步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入您的仓库。(如何新建仓库?)

步骤3 单击“克隆/下载”按钮,在弹出的窗口中单击需要的代码包类型即可直接在浏览器中 下载。

(43)

----结束

说明

● 目前支持的下载包格式有:zip、tar.gz、tar.bz2、tar。

● 下载的代码包是对应的云端仓库的master分支内容。

(44)

7 仓库迁移

7.1 概述

7.2 将SVN代码仓库迁移至CodeHub 7.3 将基于Git的远程仓库导入CodeHub 7.4 将本地代码上传到CodeHub

7.1 概述

本章主要介绍如何将您的仓库迁移到华为云代码托管服务(CodeHub)中,请结合你 目前的仓库存储方式选择以下迁移方案:

7.2 将SVN代码仓库迁移至CodeHub;

7.3 将基于Git的远程仓库导入CodeHub;

7.4 将本地代码上传到CodeHub;

7.2 将 SVN 代码仓库迁移至 CodeHub

本文以一个标准SVN布局的代码仓库为例介绍如何将已有SVN仓库迁移至CodeHub,

仓库目录结构如下图所示:

(45)

本文档提供两种方法进行SVN已有代码迁移,两种迁移方法都对SVN中的代码及操作 记录进行了有效迁移,区别点在于方法一在迁移的过程中,将SVN中的branch、tag文 件夹映射为Git中的分支及标签,这样做有利于后续继续基于代码托管服务进行开发,

但是迁移过程较为繁琐。方法二操作方式简单,但是将SVN中的branch、tag文件夹进 行平移,不利于后续的继续开发,您可以根据自己的实际场景进行选用。

● 项目开发过程中,仅有部分代码保存在SVN中:建议使用GitBash客户端导入进行 迁移。

● 项目完成后,SVN中已有完整的项目代码:建议使用迁移方法二:HTTP在线导入 进行迁移。

GitBash 客户端导入

步骤1 获取SVN代码库提交者信息。

1. 通过TortoiseSVN将待迁移的代码仓库下载到本地。

2. 进入本地SVN代码仓库(本文为KotlinGallery),在Git Bash客户端执行如下命 令:svn log --xml | grep "^<author" | sort -u | \awk -F '<author>' '{print $2}' | awk -F '</author>' '{print

$1}' > userinfo.txt

执行完毕后,该目录下将生成文件“userinfo.txt”。

3. 打开文件“userinfo.txt”,可看到文件中显示所有对该仓库有提交的提交者信 息。

4. 因为Git是用邮箱来标识一个提交者的,为了更好的将SVN已有的信息映射到Git仓 库里,需要从SVN用户名到Git作一个映射关系。

(46)

修改“userinfo.txt”,使每一行中,svn作者 = Git作者昵称 <邮箱地址>,用如下 格式表示映射关系:

步骤2 建立本地Git仓库。

1. 在本地新建一个空的Git仓库目录,并将步骤一中的“userinfo.txt”文件拷贝到该 目录下。

2. 在该目录下启动GitBash客户端,并执行如下命令克隆一个Git版本库。

git svn clone SVN仓库地址 --no-metadata --authors-file=userinfo.txt --trunk=trunk --tags=tags -- branches=branches

命令行中的参数说明如下,请根据实际情况选择相应参数:

参数 说明

--no-metadata 阻止git导出SVN包含的一些无用信息。

--authors-file SVN账号映射到git账号文件,所有svn作者都要做映射。

--trunk 主开发项目 --branches 分支项目 --tags 标签

执行成功后,本地将生成一个Git仓库。

3. 输入以下命令,进入“KotlinGallery”文件夹,并验证当前Git仓库分支结构。

cd KotlinGallery git branch -a

从图中可以看到所有SVN中的目录结构均以Git分支的形式迁移成功。

步骤3 本地分支修正。

(47)

在步骤二中,使用git svn clone命令将SVN仓库中tags文件夹也作为分支进行保存,

这个明显不符合Git的使用规范。因此在上传到远端仓库前,需要先对本地分支进行调 整,使之更符合Git使用规范。

1. 进入本地Git仓库中,使用GitBash客户端执行如下命令,把tags分支变成合适的 Git标签。

cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/

rm -Rf .git/refs/remotes/origin/tags git branch -a

git tag

2. 输入以下命令,把“refs/remotes”下面剩下的索引变成本地分支。

cp -Rf .git/refs/remotes/origin/* .git/refs/heads/

rm -Rf .git/refs/remotes/origin git branch -a

git tag

3. 输入以下命令,将trunk分支合入master分支,并删除trunk分支。

git merge trunk git branch -d trunk git branch -a git tag

(48)

步骤4 本地代码上传。

1. 参考设置SSH密钥/HTTPS密码,设置代码仓库SSH密钥。

2. 通过如下命令将本地仓库与CodeHub仓库进行关联,并推送master分支到代码托 管服务的仓库。

git remote add origin codehub仓库地址 git push --set-upstream origin master

推送成功后,登录CodeHub,可在“分支”页面中查看到当前仓库下的master分 支。

3. 输入以下命令,从本地推送其余分支至CodeHub。

git push origin --all

推送成功后,可在“分支”页面中查看到,当前仓库下新增了r1.1_hotfix分支。

4. 输入以下命令,从本地推送tags至CodeHub。

git push origin --tags

推送成功后,可在CodeHub“标签”页面中查看到当前仓库下已有标签“r1.0”

与“r1.1”。

----结束

迁移方法二:HTTP 在线导入

首先确保你的SVN服务器支持HTTP或HTTPS方式访问,可以在任一浏览器,输入

“http或https+SVN服务器地址+访问仓库名称”进行验证。

本文案例如下图所示:

(49)

步骤1 进入项目(如何新建项目?),单击页面上方导航“代码 > 代码托管”,进入代码托 管服务。

步骤2 单击“普通新建”旁的箭头,在下拉列表中选择“导入外部仓库”。

步骤3 填入要导入的SVN仓库地址,输入相应SVN用户名、密码,单击“下一步”。

输入要新建的代码仓库名称,进行相应权限配置,单击“确定”,等待仓库创建。

步骤4 代码仓库创建成功后,单击仓库名称查看仓库详情。

----结束

7.3 将基于 Git 的远程仓库导入 CodeHub

背景信息

代码托管服务支持您将基于Git的云端仓库导入。

这里基于Git的远程仓库指的是GitHub这类存储服务中的云端仓库。

方式一:在线导入

这种方式可以直接将您的远程仓库导入到CodeHub中,全程在线完成,但导入速度会 受到源仓库的网络条件的影响。

1. 在代码托管首页,单击“普通新建”旁的 ,在扩展框中选择“导入外部仓 库”,弹出“填写外部仓库信息”页面。

2. 设置“源仓库路径”,访问权限根据需要设置,默认为“不需要用户名/密码”。

如果源仓库是开源库(公仓),请勾选“不需要用户名/密码”。

如果源仓库是私有仓库,请勾选“需要用户名/密码”。

单击“下一步”完成导入。

(50)

详细操作可参考5.4 导入外部仓库。

方式二:将 Git 仓库克隆到本地,再关联并推送到 CodeHub

当因为网络等原因,无法直接在线导入时,可以使用以下方法,将远程仓库克隆到本 地,再关联、推送到云端CodeHub中。

步骤1 安装与配置Git客户端。

步骤2 从源仓库地址下载裸仓。

下面以GitHub为例:

1. 获取GitHub的源仓库地址。

2. 将仓库裸克隆到本地计算机,并使用cd指令进入仓库目录。

git clone --bare 源仓库地址

(51)

步骤3 将本地仓库关联并推送到CodeHub。

1. 在CodeHub服务中新建一个空仓库,不要勾选“允许生成README文件”,进入 新建的仓库,取得仓库地址。

本示例中以HTTPS地址为例。

2. 将本地的仓库推送到新建的CodeHub仓库中。

git push --mirror 新建的CodeHub仓库的地址

指令执行时,会提示您输入CodeHub仓库的HTTPS账号和密码,正确输入即可。

(如何获取HTTPS账号、密码?)

如果您的源仓库有分支和标签,也会一并推送到CodeHub云端仓库。

----结束

推送成功后,到CodeHub云端仓库内验证迁移是否完整,如有问题请联系华为云技术 支持。(如何浏览CodeHub云端仓库?)

7.4 将本地代码上传到 CodeHub

背景信息

代码托管服务支持您将本地的代码进行Git初始化并上传到CodeHub仓库。

(52)

操作步骤

步骤1 在DevCloud代码托管服务中,创建一个空仓库。

● 不选择“选择gitignore”。

● 不勾选“允许生成README文件”。

步骤2 在本地,准备好将要上传的源代码。

● 如果原来是来自SVN服务器的,建议参考 将SVN代码库迁移到Git代码库。

● 如果原来没有纳入过任何的版本系统,则在源代码的根目录,执行以下git命令

(以Git Bash为例):

a. 初始化Git仓库:

git init

b. 将文件加入版本库:

git add *

c. 创建初始提交:

git commit -m "init commit"

步骤3 设置本地仓库的远程服务器地址:

● 如果原来从其它地方clone的git仓库,则添加一个新的remote,命令行参考如 下:git remote add new git@***.***.com:testtransfer/Repo1.git ——(new 后面为仓库地址)

仓库地址在仓库详情页,获取方式如下图:

● 如果是一个刚刚初始化的仓库,则添加一个名为origin的remote,命令行参考如 下:git remote add origin git@***.***.com:testtransfer/Repo1.git ——(origin 后面为仓库地址)

步骤4 推送全部代码到远端仓库:

git push new master (对应步骤3的第一种情况)

(53)

git push origin master (对应步骤3的第二种情况)

----结束 说明

以上操作需要一定的Git基础知识,如遇到问题可以在Git官网学习或者申请技术支持。

(54)

8 浏览云端仓库

8.1 仓库列表 8.2 查看仓库详情

8.3 在控制台中管理仓库文件 8.4 查看仓库的统计信息 8.5 查看仓库的提交网络

8.1 仓库列表

仓库列表是您使用代码托管服务的入口。

在这里您可以完成新建仓库、配置您的SSH密钥或HTTPS密码、获取仓库地址等操 作,具体包含功能如下。

● 新建仓库,此处支持“普通新建”、“按模板新建”、“导入外部仓库”三种新

建方式。

● 设置我的SSH密钥。

● 设置我的HTTPS密码。

(55)

IP白名单。

● 收藏按钮,点亮后对应的仓库将在列表中靠前显示。

8.2 查看仓库详情

在仓库列表中单击仓库名称可进入该仓库的详情页面,代码托管服务提供了丰富的控 制台操作,详情如下。

仓库页的顶部可以查看仓库的创建者、创建时间、最近一次文件的更新时间,同步状 态(导入的仓库)、fork关系(fork的仓库)。

在仓库详情页面中提供了如下操作页签:

● 文件:此仓库的文件列表,支持在线修改文件、查看提交历史等操作。

● 分支:此仓库的分支列表,可在控制台中管理分支。

● 标签:此仓库的标签列表,可在控制台中管理标签。

● 合并请求:分支合并请求管理页面。

● 评审记录:可查看合并评审记录、提交评审记录。

● 动态:可查看仓库动态信息。

● 成员列表:仓库成员管理页面,支持一键从项目同步成员,也可以单独调整某个

成员的权限。

● 关联工作项:所关联工作项的列表,其可设置与项目管理中工作项的联动,提升

效率。

● 仓库统计:仓库提交记录的可视化图标,主要展现了代码贡献度等信息。

● 提交网络:通过查看仓库提交历史的网络图,可以清晰的了解代码的变化历程,

包括分支之间的合并关系、操作人等。

● 设置:此仓库的设置入口,只有仓库管理员和仓库所有人可以看到此页签并进行

设置。

另外仓库详情页框架上还提供以下功能的快捷入口:

● 克隆/下载:可获取仓库的SSH地址、HTTPS地址,也可以直接下载代码压缩包。

● fork:会显示目前仓库有几个fork出的仓库,单击弹出新建-fork页面。

● CloudIDE:可使用CloudIDE打开代码(目前免费体验)。

● 收藏/ 取消收藏:可以切换仓库的切换状态,被收藏的仓库将在仓库里列表中靠前 显示。

8.3 在控制台中管理仓库文件

概述

代码托管服务提供了对文件的编辑、追溯、对比等功能。

当您进入仓库详情控制台中,系统将为您定位到“文件”页签,在这里您可以切换到 不同的分支、标签,查看对应版本中文件的情况,其页面左侧(下图左)为文件列 表,右侧(下图右)为可切换的标签:内容(显示为当前所展示的文件的名称)、历 史、对比。

(56)

文件列表

文件列表位于该仓库详情中的文件页签的左侧。

文件列表包含以下功能:

● 切换分支、标签:切换后的分支、标签后会显示对应版本的文件目录。

● 检索:单击弹出搜索页面,可对文件列表进行搜索定位。

● 可扩展功能如下:

– 新建文件。

– 新建目录。

– 新建子模块。

– 上传文件。

– 批量删除。

● 鼠标停留在文件名称处,可以唤出修改文件名称的按钮。

● 单击文件名称可将该文件内容显示于页面右侧的内容页签,在内容页签可对文件 进行修改文件内容、查看溯源等操作。

新建文件

在代码托管仓库控制台中新建文件,其实质是一次“文件的新建 → add → commit→

push”,会生成提交记录。

(57)

新建的文件会添加对应分支的文件列表,并可以在内容页签中查看其提交备注、详细 内容等。

步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入您的仓库。(如何新建仓库?)

步骤3 单击 图标,在展开项中选择“新建文件”,弹出“新建文件”页面。

步骤4 在“新建文件”页面,按提示填选相关内容。

“备注”字段相当于git commit中的-m消息,可以用于12.4 关联工作项。

步骤5 单击“确定”按钮,即可保存新建的文件。

----结束

新建目录

在代码托管仓库控制台中新建目录,其实质是一次“文件夹结构的新建 → add → commit→ push”,会生成提交记录。

新建的目录结构(文件夹结构)会添加对应分支的文件列表,并可以在内容页签中查 看其每层的提交备注、详细内容等。

新建目录后在目录的最深层会默认新建一个.gitkeep文件,这是因为Git不允许提交空 文件夹。

步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入您的仓库。(如何新建仓库?)

步骤3 单击 图标,在展开项中选择“新建目录”,弹出“新建目录”页面。

步骤4 在“新建目录”页面,按提示填选相关内容。

● 目录用“/” 划分层级。

● “备注”字段相当于git commit中的-m消息,可以用于12.4 关联工作项。

步骤5 单击“确定”按钮,即可保存新建目录结构。

----结束

上传文件

在代码托管仓库控制台中上传文件,其实质是一次“文件的新建 → add → commit→

push”,会生成提交记录。

步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入您的仓库。(如何新建仓库?)

步骤3 单击 图标,在展开项中选择“上传文件”,弹出“上传文件”页面。

(58)

步骤4 在“上传文件”页面,按提示填选相关内容。

● 支持所有文件格式,每次只能上传单个文件,浏览器上传单个文件不超过10M,

如果超过10M,请使用Git客户端push方式上传(客户端支持10M以上文件的上 传)。

● “备注”字段相当于git commit中的-m消息,可以用于12.4 关联工作项。

步骤5 单击“确定”按钮,即可完成文件上传。

----结束

上传的文件会添加对应分支的文件列表,并可以在内容页签中查看其每层的提交备 注、详细内容等。

批量删除

在代码托管仓库控制台中批量删除文件,其实质是一次“rm → commit→ push”,

会生成提交记录。

步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入您的仓库。(如何新建仓库?)

步骤3 单击 图标,在展开项中选择“批量删除”,页面右侧会出现可选择的文件列表。

步骤4 勾选文件,单击“批量删除”按钮,弹出“即将批量删除的文件”页面。

步骤5 在“即将批量删除的文件”页面,填写备注内容。

● “备注”字段相当于git commit中的-m消息,可以用于12.4 关联工作项。

步骤6 单击“确定”按钮,即可完成批量删除文件操作。

----结束

如果想找回删除的文件,可以新建一条分支,然后找到文件删除前的最近一次提交,

进行Cherry-Pick操作。

修改文件名称

在代码托管仓库控制台中修改文件名称,其实质是一次“文件的名称修改 → add → commit→ push”,会生成提交记录。

步骤如下:

步骤1 进入代码托管服务首页(注意切换到您对应的区域)。

步骤2 进入您的仓库。(如何新建仓库?)

步骤3 鼠标悬停于左侧文件列表中的某个文件上,单击唤出的 图标,弹出“修改文件名”

页面。。

步骤4 在“修改文件名”页面,修改文件名称、填写备注内容。

● “备注”字段相当于git commit中的-m消息,可以用于12.4 关联工作项。

步骤5 单击“确定”按钮,即可完成文件名称的修改操作。

----结束

(59)

内容页签:查看文件详细内容

“内容”页签位于仓库详情中,其默认状态显示文件详情列表,如下图所示。

展开某个文件时,可以对文件进行以下操作:

● 全屏显示:将该文件窗口扩展为全屏。

● 复制源代码:复制所展开文件内容到剪切板。

● 下载:直接将此文件下载到本地。

● 编辑:在线编辑文件。

● 移除:单独删除文件。

● 修改追溯:单独展开查看此文件的修改记录,可跳转到修改所对应的提交中。

说明

编辑、删除操作需要填写备注信息,相当于git commit中的-m消息,其可以用于12.4 关联工作 项。

历史页签:查看仓库的提交历史

“历史”页签位于仓库详情中,其显示该仓库的提交历史,如下图所示。

在这个页面,可以对提交历史做如下操作:

● 单击“提交单号”,可以跳转到该次提交的详情中。

● 可点开扩展功能:

– 新建分支。

– 新建标签:可针对此次提交补打标签。(什么是标签?)

– Cherry-Pick:把此次提交作为最新的提交覆盖到某条分支上,这是一种版本 找回方式。

– 查看提交记录。

(60)

对比页签:提交的差异对比

可以选择不同提交批次,进行差异对比。

8.4 查看仓库的统计信息

在仓库详情中的“仓库统计”页签,可以查看仓库的相关统计信息,详情如下:

● 仓库信息概要:主要显示仓库容量、LFS容量、仓库分支数量(云端仓库)、标签 数量(云端仓库)、仓库成员数量、总提交次数统计。

可选择分支,对仓库趋势图、贡献者统计、提交统计的统计范围产生影响。(不 会影响仓库信息概要)

● 仓库趋势图:显示仓库当前分支的提交分布情况。

● 贡献者统计:统计当前分支中代码提交者们的贡献度(提交次数、代码行数)。

● 提交统计:按不同维度(每周、每天、每小时)统计代码提交活跃度。

數據

表 5-2 按模板新建仓库的参数说明 字段名称 是 否 必 填 备注说明 代码仓库名 称 是 ● 以字母、数字、下划线开头,名称还可包含点和连字符。 归属项目 是 ● 仓库必须挂在项目下。 ● 如果在项目内新建仓库则默认选择该项目,页面会隐去“归 属项目”这个字段。 ● 如果账号下没有项目或者在项目选择框中选择“新建项目” 会先弹出“快捷新建项目”页面,这时建立的项目是basic项 目。 (basic项目,只有代码托管、代码检查功能,其它功能都不开 通也不显示,需要手动去项目设置页更改才能变成基础项 目)。
表 10-1 代码提交规则设置使用说明 字段 说明 拒绝未签名的提交 配置是否只有已签名的提交才能推送到该仓库。 签名方式:在客户端commit的时候增加 -s参数。 git commit -s -m “您的提交备注” 注意需要提前在客户端配置好签名和邮箱。 不允许用户使用git
表 10-2 参数说明 配置项 说明 分支名称 可单独选择某条分支,也可以直接 选择应用于全部该仓库下的分支。 合入前需要评审 勾选后,适配的分支在被合入时必 须所有审核人都同意合入后才能执 行合入操作。 最小审核人数 可配置1~5。 重新推送代码时重置审核人 当重新push数据到MR的源分支时, 重置审核人。 仅能从以下审核人中追加审核人 可以指定可作为审核人的人员范 围。 ● 打分机制:可设置最低合入分数。 10.10 保护分支管理 为什么要设置保护分支?
表 12-1 Git-Flow 工作模式中分支的使用建议 分支名 说明 有效 性 何时被创建 何时直接 在此 分支 上开 发 何时被其它分支合入 何时合入到其它分支 何时结束生命周期 master 核心分 支,配 合标 签,用 于归档 历史版 本,要 保证其 中的版 本都是 可用的 长期存在 项目仓库建立之初 从不 ● 项目版本封版时,被develop或release分支合入● 已发布版本中 发现的 bug被 修复 后,被 对应的 hotfix 分支合 入 _ _
+6

參考文獻

相關文件

並存入百事可樂企業內部網站的 伺服 並存入百事可樂企業內部網站的 IBM RS/6000 伺服 器資料庫。然後,主管與分析師可以使用上型電腦

‡ RFID 運作原理是透過一片小型硬體的無線射頻辨識技 術晶片( RFID chips),利用內含的天線來傳送與接

為了讓行動客戶端可以順利地取得所需的資料項,index bucket 必須能夠引 導行動客戶端一步一步的拿到所需的資料項,因此在廣播結構中的

並整合「 顧客關係管理」,以問卷調查方式,了解機械行業對「顧 客關係管理」的認知與狀況。 在前述的基礎下, 探討企業實施顧 客關係管理在

(三) 、 欲做 3 刃後斜角研磨,先打開開關約 10 秒鐘,將夾頭組放 入後斜角研磨座,以 1 號缺口部作為第一研磨順序,對準後 斜角研磨座上

具在彼文 (云云)

使用場地須分署 暨所屬就業中心 及南方創客基地 未登記使用之時 間或未辦理相關 活動時,始得借

李佳芸 保險金融管理系 商業與管理群 已報到 陳昶霈 保險金融管理系 商業與管理群 已報到 陳錫建 保險金融管理系 商業與管理群 已報到 潘學恩 保險金融管理系