Git概述

从狭义上来说,版本控制系统是软件项目开发过程中管理代码所有修订版本的软件,能够存储、追踪文件的修改历史,记录多个版本的开发和维护,事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。版本控制系统(Version Control Systems)主要分为两类,集中式和分布式。

版本控制系统

集中式版本控制系统

集中式版本控制系统的特点是只有一台中央服务器,存放着所有研发数据,而其它客户端机器上保存的是中央服务器最新版本的文件快照,不包括项目文件的变更历史。所以,每个相关人员工作开始前,都需要从这台中央服务器同步最新版本,才能开始工作

常见的集中式版本控制系统为CVS、VSS、SVN、ClearCase。

集中式版本控制系统的优点与缺点如下:

优点
缺点

操作简单,使用没有难度,可轻松上手。

文件夹级权限控制,权限控制粒度小。

对客户端配置要求不高,无需存储全套代码。

网络环境要求高,相关人员必须联网才能工作。

中央服务器的单点故障影响全局,如果服务器宕机,所有人都无法工作。

中央服务器在没有备份的情况下,磁盘一旦被损坏,将丢失所有数据。

分布式版本控制系统

分布式版本控制系统的特点是每个客户端都是代码仓库的完整镜像,包括项目文件的变更历史。所有数据分布的存储在每个客户端,不存在中央服务器。可能有人会问,我们公司使用Git分布式存储工具,也有“中央服务器”啊?其实,这个所谓的“中央服务器”仅仅是用来方便管理多人协作,任何一台客户端都可以胜任它的工作,它和所有客户端没有本质区别。

常见的分布式版本控制系统为Git、Mercurial、Bazaar、Bitkeeper。

分布式版本控制系统的优点与缺点如下

优点
缺点

版本库本地化,版本库的完整克隆,包括标签、分支、版本记录等。

支持离线提交,适合跨地域协同开发。

分支切换快速高效,创建和销毁分支廉价。

学习成本高,不容易上手。

只能针对整个仓库创建分支,无法根据目录建立层次性的分支。

代码托管服务云端操作

云端仓库功能

云端仓库功能支持新建仓库、仓库克隆、分支管理、标签管理、提交代码、拉取代码、推送代码、代码阅读、在线修改、仓库成员管理、密钥管理等。

新建空仓库

1、在目标项目下的代码托管服务中,单击“普通新建”按钮。

2、填写仓库的基本信息。

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

设置SSH密钥/HTTPS密码

后续需要在本地客户端进行代码仓库的克隆/推送,SSH密钥和HTTPS密码是客户端和服务端交互的凭证,需要先对它们进行设置。

设置SSH密钥

SSH密钥是使用SSH协议和代码托管服务端交互的凭证,如果您使用windows下的Git Bash客户端并在其中已经生成,此步骤可以略过。

1、打开Git客户端(Git Bash或linux的命令行窗口),输入以下命令行:ssh-keygen -t rsa -C "<您的邮箱>",然后输入3个回车(Enter键)即可,生成的SSH秘钥对默认在“~/.ssh/id_rsa、~/.ssh/id_rsa.pub”位置。

2、添加SSH密钥到代码托管服务端:

打开Git客户端(Git Bash或linux的命令行窗口),将SSH密钥“~/.ssh/id_rsa.pub”的内容打印出来。

3、复制上述的SSH密钥内容,登录您的代码托管服务仓库列表页,单击右上角昵称,单击“个人设置 > SSH密钥管理”,进入页面。

4、在“SSH密钥管理”页面,单击“添加SSH密钥”,弹出“添加SSH密钥”页面,填写下图中信息,单击“确定”,页面会提示您操作成功。

设置HTTPS密码

HTTPS密码是使用HTTPS协议和代码托管服务端交互的凭证,设置步骤如下:

1、登录您的代码托管服务仓库列表页,单击右上角昵称,单击“个人设置 > HTTPS密钥管理”,进入页面。

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

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

Git本地研发场景

背景介绍

在CodeArts云端创建一个README文件的空仓库,然后架构师或者项目负责人需要把本地框架代码推送到这个空仓库,最后,其他开发人员将云端架构代码克隆到本地,进行增量应用开发。

推送架构代码

1、打开本地框架代码,确保根目录名与云端创建的代码仓库名一致,在根目录下右键打开Git bash终端。

2、推送本地代码到云端。

克隆代码

开发人员在本地准备克隆云端架构代码。

代码提交

一次修改被成功提交到远端仓库会历经四个阶段:“1本地工作区 > 2缓存区 > 3版本库 > 4远端版本库”。

主要涉及如下三步操作:

#git add/rm filename //将新增、修改或者删除的文件增加到暂存区。

#git commit –m “commit message” //将已暂存的文件提交到本地仓库。

#git push //将本地代码仓库修改推送到远端仓库。

分支操作

新建分支:#git branch branchName commitID

切换分支:#git checkout branchName

分支合并

无论哪种工作流都会涉及到分支合并(把一个分支中的修改整合到当前分支),主要有两种方法:三方合并(merge) 和衍合(rebase)。通过对同一种场景进行不同操作体会两种合并方法的区别。

场景:1、master分支新增了C4节点, hotfix分支新增了C3节点,现将hotfix分支合并到master分支。

#git checkout master

#git merge hotfix

2、衍合先将master分支新增节点C4以补丁形式保存在.git/rebase目录中,然后同步hotfix分支最新代码。

#git checkout master

#git rebase hotfix

点击此处前往Git本地研发场景详情→

代码托管服务常见问题

代码托管服务常见问题

  • Git如何判断是代码仓库管理员?

    若使用HTTPS方式,连接云端仓库时需要输入用户名与密码。

    用户名为HTTPS用户名,格式是:帐号/子帐号,如果当前登录的是华为云主帐号用户,则格式为:帐号/帐号,通过用户名即可判断用户在仓库中的角色。

    若使用SSH方式,连接云端仓库前需要先配置SSH密钥。

    在代码托管中,每个密钥只能对应一个用户名。在连接云端仓库时,将记录密钥与用户名的对应关系,来判断用户在仓库中的角色。


  • 如何获取代码下载的存储路径?

    若按照默认路径安装Git,通过本地PC上的开始菜单栏打开Git Bash,则通常默认的存储路径为“C:/User/XX用户”。

    若在某个文件夹内通过鼠标右键菜单打开Git bash Here,则存储路径就是该文件夹。


  • 怎样获取代码仓库地址?

    1、进入代码托管首页,单击仓库列表中的仓库名进入仓库详情页。

    2、单击右侧导航栏“克隆/下载”按钮,单击“用SSH克隆”获取到SSH协议地址。

    3、单击“用HTTPS克隆”获取到HTTPS协议地址。

    须知:克隆地址仅用于克隆,不支持页面直接访问。可用仓库的页面url进行页面访问。


  • 复制的仓库地址用在哪些场景?

    在连接云端仓库时,需要使用仓库地址,例如:

    1、克隆云端代码仓库到本地时,使用命令: git clone 云端仓库url

    2、在本地init仓库后,需要与云端仓库连接时,使用命令:git remote add origin 云端仓库url


  • 代码托管服务是否支持SVN?

    不支持。

    代码托管服务提供基于Git的分布式版本控制管理服务,能够更加便捷的进行异地协作。

    虽然不支持SVN,但可以将SVN代码库导入到代码仓库中 。


  • 向代码仓库中上传压缩包能否在线解压?

    不能。

    暂不支持在线解压缩,建议在本地解压之后使用Git命令上传。


1对1咨询专属顾问

1对1免费咨询华为云专属顾问,为您量身定制产品推荐方案
立即咨询

华为云咨询电话:950808或4000-955-988 转1

华为云咨询电话:950808或4000-955-988 转1

华为云专业的服务团队,致力于为您提供专业的售前购买咨询服务,及完善的售后技术服务,助您云上无忧