基于Git的代码托管入门
代码托管(CodeArts Repo)是面向软件开发者的基于Git的在线代码托管服务,是具备安全管控、成员/权限管理、分支保护/合并、在线编辑、统计服务等功能的云端代码仓库,旨在解决软件开发者在跨地域协同、多分支并发、代码版本管理、安全性等方面的问题。通过本章,您可以快速掌握Git和代码托管的基本使用方法,如果您对Git很熟悉,可以跳过本章。
在本章中,将模拟软件项目开发场景,使用代码托管提供的Java War Demo模板创建一个云端仓库,通过SSH方式将云端仓库克隆到本地Git环境中,在本地修改代码内容并推送修改至云端仓库。
前提条件
- 已经可用的项目,若没有,需新建项目。
- 下载安装Git客户端。
- 设置客户端与远程仓库的交互凭证。
- 确保您的网络可以访问代码托管服务。
ssh -vT git@XXXXXXXX.com
如果返回内容含有“connect to host XXXXXXXX.com port 22: Connection timed out”,则您的网络被限制,无法访问代码托管服务,请求助您本地所属网络管理员。
创建云端仓库并编辑其中的代码
如果您已有可用的云端仓库,可以跳过本节。
在本节中,您将使用已有模板“Java War Demo”快速创建一个新的仓库。“Java War Demo”模板是开发者们都熟悉的“Hello World”小程序的模板,您可以使用此模板创建的仓库体验代码托管的功能。
- 进入目标项目下的代码托管服务。
- 单击“普通新建”旁的图标,在扩展框中选择“按模板新建”,跳转到“选择模板”页面。
- 在“选择模板”页的搜索框中输入“Java War Demo”,在搜索结果中选择该模板,单击“下一步”。
模板查询条件中的区域选择指的是模板文件存放的区域,不会影响使用模板新建仓库的所在区域,新建的仓库仍与仓库所隶属的项目在同一区域中。
- 在“基本信息”页,填写仓库名称等信息,单击“确定”完成仓库创建。
创建完成后,可在代码托管服务首页中看到已创建的仓库,单击仓库名称进入仓库,可以查看仓库已有文件。
- 代码托管服务提供了线上编辑功能,开发者可以直接在云端修改仓库内的代码。
为了标识代码的唯一性,请跟随此步骤修改云端仓库的代码。
- 在仓库列表页面,找到新创建的仓库,单击“仓库名称”进入仓库。
- 在仓库“代码”页签下左侧的目录树中,打开“Hello World!”修改为任意内容,填写备注信息,并单击“确定”保存修改。
克隆云端仓库到本地环境
通过本节,您可以将克隆云端仓库到本地环境中,以下以使用Git Bash客户端为例。
- 获取仓库地址。
进入仓库详情,单击“克隆/下载”按钮获取SSH地址
- 打开Git Bash客户端。
在本地计算机上新建一个文件夹用于存放代码仓库,本案例中将其命名为“git-test”,进入文件夹,在空白处单击鼠标右键,打开Git Bash客户端。
克隆仓库时会自动初始化,无需执行init命令。
- 输入如下命令,克隆云端仓库。
1
git clone 仓库地址
命令中“仓库地址”即本节第一步中获取的SSH地址。
第一次与云端仓库互动时,会询问是否保存指纹,需输入“yes”,才能进行通信。
执行成功后,进入“git-test”文件夹,您会看到多出一个与您在云端新建的仓库同名的文件夹,并且其中有一个隐藏的.git文件夹,则说明克隆仓库成功。
- 此时您位于仓库上层目录,执行如下命令,进入仓库目录。
1
cd 仓库名称
进入仓库目录,可以看到此时Git默认为您定位到master分支。
创建与切换本地分支
master是仓库创建后默认的主分支,建议代码开发、发布、问题修复等在独立的分支开发,完成后合入主分支,保证主分支代码随时可用。本节将在本地环境中新建一个名为“dev”的分支,并切换到该分支上。
- 创建分支。
打开Git Bash,进入仓库目录,执行如下命令,在本地环境新建一个名为“dev”的分支。
git branch dev
命令执行后无回显表示创建分支成功。
- 查看分支(可选)。
执行如下命令查看本地仓库分支。
1
git branch
可以看到当前有master、dev两条分支,并且目前处于master分支,可以理解为本地有master、dev两套内容一样的代码。
- 切换分支。
执行如下命令,切换当前分支至“dev”分支。
git checkout dev
命令执行后,可以看到当前路径后的分支为“(dev)”即表示分支切换成功。分支切换后,对本地仓库的所有修改将保存在当前分支上。
管理本地代码仓库版本
本节中,将修改本地仓库中“\src\main\webapp\index.jsp”文件里的内容,并通过add及commit命令将修改提交至本地仓库。
Git本地仓库中的数据有三种状态,分别是“已修改”、“已暂存”和“已提交”。当您对仓库中的文件做出修改后,该文件状态为“已修改”,您可以通过add命令将该修改追加到本地的暂存区,此时状态为“已暂存”,再通过commit命令将修改提交到本地版本库进行管理,每次提交都会生成对应的版本和版本号,通过版本号可以进行版本的切换、回滚,下图为Git本地仓库的基本工作示意图。在同一版本中还可以同时存在多个分支,每个分支又相当于独立的版本。
- 修改dev分支的代码。
在之前章节已经克隆云端仓库到本地环境,并且切换到了dev分支,现在要对dev分支的代码进行修改,打开本地仓库文件夹找到index.jsp文件(仓库文件夹\src\main\webapp\index.jsp),使用任意文本编辑软件打开,可以看到在创建云端仓库并编辑其中的代码时修改的内容,此时本地的两个仓库分支(dev、master)与云端仓库的版本内容是一样的。
将内容修改为“Hello git!!!”并保存、关闭文件,因为之前已经切换到了dev分支,所以此时的修改仅仅将被记录在dev分支中。
- 查看修改记录(可选)。
使用status命令查看当前分支与暂存区的差异。
1
git status
如上图,git识别到了您的修改并提示您还没有将修改加入暂存区和提交到本地版本库。
- 将修改内容追加到本地暂存区中。
使用add指令将修改加入本地暂存区。
1
git add .
或
1
git add src/main/webapp/index.jsp
使用“git add .”意味着将全部修改加入暂存区,您也可以使用文件的路径来单独将某个修改的文件加入暂存区,如果没有任何回显,就是执行成功了,此时可以再次使用status命令,如下图可以看到此时修改内容已经进入暂存区等待提交。
- 将已暂存的内容提交到本地版本库。
使用commit指令将暂存区的内容提交到版本库,-m后面跟本次提交的标签。
1
git commit -m "本次提交的标签"
本示例中,看到返回“1 file changed”则表示提交成功,此时本地的master分支与dev分支已经锁定了两个版本的代码,您可以使用checkout命令切换分支然后在仓库文件夹中查看\src\main\webapp\index.jsp文件的内容,会发现当处于不同分支时,看到的是不同的文件版本。
合并本地分支
在前面的章节中,新建了dev分支,并修改了分支中的文件内容,在实际开发中,一般会有多条开发(dev)分支同时存在,所以在将代码提交到远程仓库前,一般将已经完成修改的分支都合并到master分支,以保证master分支是本地最全最新的可提交代码版本。
- 使用如下命令切换到master分支。
1
git checkout master
- 使用merge命令将dev分支的修改合并到master分支。
1
git merge dev