云服务器内容精选

  • 使用URL导Git仓入Repo 进入CodeArts Repo首页后,单击“新建仓库”,在“归属项目”下拉框中选择已有的项目或者“新建项目”。 仓库类型选择“导入仓库”,导入方式选择“Git Url”,参数填写请参考表1。 表1 “获取授权”参数填写 字段名称 说明 源仓库路径 该参数必填,该参数表示要导入的仓库路径。源仓库路径需要以(http://)或(https://)开头,以(.git)结尾。 说明: 如果仓库过大或者网络较差时,仓库导入时间可能会超过30min。如果出现导入超时,建议使用客户端clone/push来处理,具体可参考导入外部仓库提示超时。 该功能需要保证被导入的仓库 域名 和服务节点网络连通。 源仓库访问权限 必填。分两种情况填写: 如果您导入的源仓可见范围是对所有访客公开,勾选“不需要校验权限”。 如果您导入的源仓可见范围是私仓,请勾选“需要校验权限”。当前支持两种鉴权方式,“通过服务扩展点”和“通过用户名密码授权”,参数填写请参考校验导仓权限。 单击“下一步”,进入“填写基本信息”页,请参考表格填写参数。 请参考表1 同步仓库设置的参数表格,填写“同步仓库”设置参数。 填写完参数后,会自动跳转到“我创建的”代码仓列表页面,如果新建代码仓库名称颜色为灰色,且仓库名称旁有红色感叹号,表示该仓库导入失败,可能原因:用户名或者密码/Access Token错误。可以将该代码仓删除,按照如上步骤操作,重新导入外部仓库。 当前Git支持的外部导入源包括:bitbucket.org、code.aliyun.com、coding.net、git.qcloud.com、gitee.com、github.com、gitlab.com、visualstudio.com、xiaolvyun.baidu.com。 在新建代码仓库后,仅有创建者能够访问该仓库。其他项目成员需要手动添加到仓库中,并分配相应的权限。因此,您需要根据需求,手动为代码仓库添加成员并为新增成员配置访问权限。 父主题: 迁移第三方Git仓到Repo
  • 通过E2E单号关联门禁 如果为目标仓库开启了E2E单号关联,即勾选“必须与CodeArts Req关联”。执行如下步骤,完成E2E单号关联: 进入目标仓库,切换到“合并请求”页签,单击目标合并请求名称,进入目标合并请求。 单击“详情”页中“关联工作项”旁的图标,搜索并选择目标工作项。 单击“确定”,完成E2E单号关联。 当合并请求成功关联工作项时,门禁显示为“E2E单号关联通过”。 如果您在合并代码的时候提示单个仓库容量超过2GB,不允许合并申请,请检查是否有Git提交的缓存文件所致。 MR关联工作项最大数量为100个。
  • 工作流概述 Git工作流不仅可以进行版本控制,还可以管理项目流程和团队协同开发,有效提高项目管理水平和团队协同开发能力。在实际应用中,有必要根据团队的需求和工作流程,选择合适的Git工作流,实现持续集成、持续交付和快速迭代的目标。 下面介绍四种工作流的工作方式、优缺点,以及使用中的一些注意事项。 集中式工作流 功能分支工作流 Git flow工作流(推荐) Forking工作流 父主题: 开发协作工作流
  • 如何解决代码提交冲突? 当代码提交冲突产生时,您可以将远程代码仓库拉取(pull)到本地仓库的工作区,这时Git会将可以合并的修改内容进行合并,并将不能合并的文件内容进行提示,开发者只需要对提示的冲突内容进行修改即可再次推送到远程仓库(add → commit → push),这时冲突就解决完毕了。 如下图所示,在做拉取(pull)操作时,Git提示您,一个文件合并时产生了冲突。 在修改冲突文件时应该考虑清楚,必要时要与冲突方联系协商解决,避免覆盖他人代码。 git pull可以理解为 git fetch 的操作 + git merge的操作,其详细说明如下: git fetch origin master #从远程主机的master分支拉取最新内容 git merge FETCH_HEAD #将拉取下来的最新内容合并到当前所在的分支中 在merge的时候,会将有冲突不能合并的内容做出提示。
  • 如何避免冲突的产生? 代码提交、合并冲突经常发生,但只要在代码开发前,做好仓库预处理工作,就能有效的避免冲突的产生。 在示例:冲突的产生与解决中,开发者02(02_dev)成功的解决了提交远程仓库时遇到的冲突问题,此时他的本地仓库与远程仓库的最新版本内容是一样的,但是开发者01(01_dev)本地仓库和远程仓库仍然是有版本差异的,此时如果直接推送本地仓库(push),仍然会产生冲突,那么如何避免呢? 方式一(推荐新手使用): 如果开发者本地的仓库不常更新使用,在做本地修改时,可以重新clone一份远程仓库的内容到本地,修改后再次提交,这样简单直接的解决了版本差异问题,但缺点是如果仓库较大、更新记录较多,clone过程将耗费一定的时间。 方式二: 如果开发者每天都要对本地仓库进行修改,则建议在本地新建一条开发分支进行代码修改,在要提交远程仓库时,切换到master分支并将远程仓库的最新master分支内容拉取到本地,在本地进行分支合并,对产生的冲突进行修复,成功将内容合并到master分支后,再提交到远程仓库。
  • Linux、Mac平台的git-crypt、GPG安装 Linux平台安装git-crypt、GPG Linux安装依赖环境。 Software Debian/Ubuntu package RHEL/CentOS package Make make make A C++11 compiler (e.g. gcc 4.9+) g++ gcc-c++ OpenSSL development files libssl-dev openssl-devel Linux环境下,使用源码编译方式安装git-crypt。 下载源码 make make install 安装到指定目录。 make install PREFIX=/usr/local Linux环境下,使用源码编译方式安装GPG。 下载源码 ./configure make make install 使用Debian包安装git-crypt。 下载源码 Debian打包可以在项目Git仓库的“debian”分支中找到。 软件包是用“git-buildpackage”构建的,如下所示。 git checkout debian git-buildpackage -uc -us Debian环境下使用构建包安装GPG。 sudo apt-get install gnupg MAC平台安装git-crypt、GPG macOS上安装git-crypt。 使用 brew 软件包管理器,只需运行如下命令。 brew install git-crypt macOS上安装GPG。 使用 brew 软件包管理器,只需运行如下命令。 brew install GPG
  • git-crypt加密在团队合作中的应用 很多时候,团队需要在代码仓库中存储限制公开的文件,这时可以优先考虑使用“CodeArts Repo” + “Git” + “git-crypt”的组合,来实现部分文件在仓库分布式开源中的加密。 通常,直接使用密钥对方式的加密就能满足限制部分文件访问的需要。 当团队需要将加密文件设置不同的秘密级别时,可以使用GPG方式加密,这种方式支持您对同一个仓库的不同文件使用不同的密钥加密,将不同密级的密钥分别随仓库共享给组织内的伙伴,即可实现文件的定向分级限制访问。
  • 在Windows中使用密钥对方式进行加密、解密 下载并安装最新的Windows Git客户端,下载最新基于Windows的git-crypt,把下载到的exe文件放到Git安装目录下的“cmd”文件夹中。 执行如下命令,在本地生成密钥对。 打开“Git Bash”,并进入本地代码仓库。 执行如下命令,在Git代码仓库中创建“.git-crypt”文件夹,文件夹包含加密文件所需的密钥和配置文件。 git-crypt init 执行如下命令,把密钥文件导出到C:/test目录并命名为KeyFile。 git-crypt export-key /c/test/keyfile 执行完上述步骤,您可以到密钥导出的文件路径进行验证,确认是否已成功生成密钥。持有这个密钥文件的计算机,可以解密对应的加密文件。 执行如下命令,为代码仓库配置加密范围。 在仓库的根目录下新建一个名为“.gitattributes”的文件。 打开“.gitattributes”文件,设置加密范围,语法如下。 文件名或文件范围 filter=git-crypt diff=git-crypt 下面给出四个示例。 FT/file01.txt filter=git-crypt diff=git-crypt #将特定文件加密,这里加密的是FT文件夹下的file01.txt *.java filter=git-crypt diff=git-crypt #将 .java类型文件加密 G* filter=git-crypt diff=git-crypt #将 文件名为 G 开头的文件加密 ForTest/** filter=git-crypt diff=git-crypt #将 ForTest 文件夹下的文件加密 如果创建.gitattributes文件时提示“必须键入文件名”,可以将文件名填写成 “.gitattributes.”即可创建成功,如果使用Linux指令创建文件,则不会出现此问题。 注意不要将.gitattributes保存成txt文件,否则配置会无效。 进行文件加密。 在仓库根目录打开Git bash,执行如下指令即可完成加密,加密后可看到目前文件的加密状态。 git-crypt status 加密执行后,在您的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为您本地仓库有密钥存在。 这时你可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。 加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。 “git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,Git会对此设定涉及的未加密文件做出提示(见上图中的Warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”。 在让团队合作中 -f (强制执行)具有一定的风险,请谨慎使用。 进行文件解密。 确认本机器Git安装路径下存在git-crypt文件。 将仓库从代码托管克隆到本地。 获取加密此仓库的密钥文件,并存储于本地计算机。 进入仓库目录,右键打开Git bash。 执行解密指令,执行后无回显,则为执行成功。 git-crypt unlock /C/test/KeyFile #请将 /C/test/KeyFile 更换为您实际的密钥存储路径
  • 使用Git Bash克隆代码仓库到本地 SSH密钥是一种安全的身份验证方式,用于访问远程服务器。使用SSH密钥克隆代码仓可以避免每次都需要输入用户名和密码,提高克隆代码仓的效率。 登录CodeArts Repo首页。 进入要克隆的代码仓库主页,您可以先创建个人分支,再单击“克隆/下载”按钮,并复制SSH地址。 在本地Git Bash客户端,执行如下命令,进入您要克隆代码仓的地址,该命令表示克隆的代码仓将克隆到D盘的Repo文件夹下,您可以根据需要修改地址。 cd D:/Repo 执行如下命令,克隆代码仓到该目录下。 git clone 代码仓库的SSH地址 如果您是第一次克隆仓库,会询问您是否信任远程仓库,输入“yes”即可。 如果出现下图,说明克隆仓库成功。 图1 使用SSH密钥克隆代码仓成功示意图 如果在执行步骤3时,Git Bash报错“git@test.com: Permission denied.fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.”,表示您还未配置访问Repo的SSH密钥,请先配置SSH密钥,具体请参考配置SSH密钥。
  • 使用TortoiseGit克隆代码仓库到本地 登录CodeArts Repo首页。 进入要克隆的代码仓库主页,单击“克隆/下载”按钮,并复制SSH地址。 进入您的本地仓库目录下,右键选择“Git克隆”菜单选项。 在弹出的窗口中将步骤2复制的SSH地址粘贴到URL输入框中,勾选“加载Putty密钥”并选择安装TortoiseGit客户端时生成的私钥文件。 单击“确定”。如果您是第一次在TortoiseGit客户端克隆代码仓,系统会询问您是否信任远程仓库,单击“是”即可。
  • 查看仓库详情 在仓库列表中单击要查看的仓库名称,即可进入该仓库的详情页面, 代码托管服务 提供了丰富的控制台操作,详情如下。 表1 页签说明 功能页签 功能说明 仓库首页 用于展示仓库的容量、提交次数、分支数量、标签数量、成员数量、LFS使用量、创建时间、创建者、可见范围、仓库状态、readme文件、语言、语言占比等信息。 代码 文件列表:支持新建文件、新建目录、新建子模块、上传文件、在线修改文件、修改追溯和查看提交历史等操作。 提交:支持查看提交记录及仓库网络图。 分支:支持在控制台管理分支。 Tags:支持在控制台管理标签。 对比:支持通过对比查看分支之间或标签版本之间发生的代码变化。 合并请求 支持在控制台管理分支的合并请求。 评审记录 支持查看合并请求的评审记录与Commit的评审记录。 关联工作项 所关联工作项的列表,其可设置与需求管理中工作项的联动,提升效率。 仓库统计 仓库提交记录的可视化图表,主要展现了代码贡献度等信息。 动态 支持查看仓库动态信息。 成员 支持对成员的管理,具体信息如下: 成员列表”、“成员组列表”“待审核”和“添加成员”位于仓库详情的“成员”页签下。 “成员列表”用于展示仓库中所有成员“用户名”、“用户来源”、“项目角色”、“仓库角色”和“操作”。 “成员组列表”用于展示仓库所有成员组的“成员组名称”、“成员数量”、“描述”和“操作”。 “待审核”用于展示即将加入仓库中待审核成员,包括“用户名”、“用户昵称”、“企业用户”、“项目角色”、“仓库角色”和“操作”。“待审核”成员可被拥有“添加成员”权限的人设置为“同意”或“拒绝”。 “添加成员”用于仓库添加成员或添加成员组。 设置 此仓库的设置入口。仓库内的仓库成员可以查看该页面,仓库成员是否具有仓库设置权限,请参考“权限管理”。 另外仓库详情页框架上还提供以下功能的快捷入口: 设置构建:新建编译构建任务入口。 IDE Online:可使用IDE Online打开代码(目前 免费体验 ,仅支持北京一、北京四及大连局点)。 关注:单击可关注该仓库,关注的仓库会在仓库列表置顶。 Fork:会显示目前仓库有几个Fork出的仓库,单击弹出“Fork代码仓库”页面。 克隆/下载:可获取仓库的SSH地址、HTTPS地址,也可以直接下载代码压缩包。 代码托管“吸顶”功能,当用户的仓库界面长度大于窗口长度,向下滑动鼠标滚轮后,仓库页签置顶,下图中红框位置被折叠,便于查看仓库信息,向上滑动鼠标滚轮后,界面恢复。 代码检查状态显示规则: 当用户有代码检查权限时,仓库名称后显示代码检查状态。 当用户无代码检查权限时,仓库名称后不显示代码检查状态。 构建状态显示规则: 当用户无构建权限 仓库页面上方只显示“设置构建”按钮。 当用户有构建权限 如果没有设置构建,则仓库页面上方显示“设置构建”按钮。 如果设置了构建,则会根据构建任务执行情况在仓库页面上方显示的状态有:“运行构建任务”、“构建进行中”、“构建执行失败”、“构建执行成功”。 父主题: 设置仓库
  • 在控制台管理标签 在控制台的标签列表中,可查看该远程仓库中的全量标签并进行如下操作。 单击“标签名”,跳转到该标签对应版本的文件列表。 单击“提交号”,跳转到该次提交(commit)的详情页面。 单击,可下载tar.gz或zip格式的被标签版本的文件包。 单击,可以将此标签从代码托管仓库删除(想从本地删除请clone、pull或本地手动-d删除)。 如果仓库设置IP白名单,则只有IP白名单内的机器才可以在界面下载仓库源码,如果仓库没有设置IP白名单,则均可在界面下载仓库源码。 在控制台创建分支时,您可以选择基于某个标签去创建分支。 在控制台中,单击“代码”页签,单击目标文件的“文件名称”,单击文件的“对比”页签,可在该文件的提交记录之间做差异对比。
  • 如何使用标签找回历史版本 当您要查看某个标签指向版本的代码时,可以将其检出到工作区。由于被检出的版本仅隶属于标签,而不属于任何分支,因此该代码可以编辑,但是不能add、commit。您可以基于工作区新建一条分支,在此分支上修改代码,并将此分支合入主干。具体的操作步骤如下所示。 通过标签检出历史版本。 git checkout V2.0.0 #将被标签为 V2.0.0 的版本检出到工作区 基于当前的工作区新建一条分支并切换到其中。 git switch -c forFixV2.0.0 #新建一条名为 forFixV2.0.0 的分支,并切换到其中 (可选)如果修改了新建的分支的内容,需要将修改内容提交到该分支的版本库中。 git add . #将修改添加到新分支的暂存区 git commit -m "fix bug for V2.0.0" #将修改内容存入该分支的版本库 切换到master分支,并将新建立的分支合入(本示例中为 forFixV2.0.0 分支)。 git checkout master #切换到master分支 git merge forFixV2.0.0 #将基于历史版本的修改 合入到master分支 以上命令旨在帮助您理解通过标签找回历史版本的过程原理,请根据原理自行裁剪增补Git命令以完成您在特定场景下需要的操作,不建议全流程直接复制使用。
  • 权限管理 代码组的权限管理位于代码组详情中“设置”页签下。 您可根据下表给各角色配置权限。 代码组权限矩阵仅支持项目管理员及各层代码组的所有者修改。 如果该仓库成员是从代码组下继承的,那么其角色默认为代码组角色,在仓库中修改该仓库成员的角色后,单击“成员列表”页签下仓库成员所在行对应操作列的按钮时,则该角色权限会改为之前代码组角色。 表1 代码组角色权限 角色/功能 操作权限 项目经理 Committer 开发人员 系统工程师 测试经理、测试人员、参与者、运维经理和产品经理 浏览者 自定义角色 代码组 新建 B B B B C D C 删除 B D D D D D C 设置 B D D D D D C 仓库 新建 B B B B C D C Fork B B B B C D C 删除 B D D D D D C 设置 B D D D D D C 代码 提交 B A A A C D C 下载 B A A A C D C 成员 添加 B D D D D D C 修改 B D D D D D C 删除 B D D D D D C 分支 新建 B B B B C D C 删除 B B B B C D C Tag 新建 B B B B C D C 删除 B C C C C D C MR 新建 B B B B C D C 编辑 B B C C D D C 评论 B B B B C C C 检视 B B B B D C C 审核 B B C C D D C 合并 B B C C D D C 关闭 B B C C D D C 重开 B B C C D D C A:表示该角色默认拥有该权限且不可被移除。 B:表示该角色默认拥有该权限且可被移除。 C:表示该角色可分配到该权限。 D:表示该角色不可分配到该权限。 仓库级权限管理位于仓库详情中“设置”页签下。 您可根据下表给各角色配置权限。 表2 仓库级角色权限 角色/功能 操作权限 项目经理 Committer 开发人员 系统工程师 测试经理、测试人员、参与者、运维经理和产品经理 浏览者 自定义角色 仓库 Fork B B B B C D C 删除 B D D D D D C 设置 B D D D D D C 代码 提交 B A A A C D C 下载 B A A A C D C 成员 添加 B D D D D D C 修改 B D D D D D C 删除 B D D D D D C 分支 新建 B B B B C D C 删除 B B B B C D C Tag 新建 B B B B C D C 删除 B C C C C D C MR 新建 B B B B C D C 编辑 B B C C D D C 评论 B B B B C C C 检视 B B B B D C C 审核 B B C C D D C 合并 B B C C D D C 关闭 B B C C D D C 重开 B B C C D D C A:表示该角色默认拥有该权限且不可被移除。 B:表示该角色默认拥有该权限且可被移除。 C:表示该角色可分配到该权限。 D:表示该角色不可分配到该权限。 父主题: 配置代码组
  • 管理仓库文件 单击文件名称,可对该文件进行管理,功能如下: 当您将浏览器窗口最大化时,上图下拉菜单中的功能会平铺展示。 文件名称:查看文件详细内容。 表1 界面说明 界面功能 功能说明 文件容量 显示此时该文件的容量大小。 全屏显示 将该文件窗口扩展为全屏。 复制源代码 复制所展开文件内容到剪切板。 查看原始数据 可查看该文件的原始数据。 编辑 在线编辑文件。 下载 直接将此文件下载到本地。 删除 单独删除文件。 文件内容 显示文件的全部内容。 图标 单击可添加检视意见。 修改追溯:查看文件的修改历史并追溯。 在这个页面,修改者与修改内容相互对应,单击“提交信息名称”可以跳转到该次提交的详情中。 历史:查看文件的提交历史。 在这个页面,可以对提交历史做如下操作: 单击“提交记录名称”,可以跳转到该次提交的详情中。 单击可扩展功能如下: 新建分支。 新建Tag:可针对此次提交补打标签。(什么是标签?) Cherry-Pick:把此次提交作为最新的提交覆盖到某条分支上,这是一种版本找回方式。 Revert:还原此次提交。 查看代码。 对比:提交的差异对比。 在代码托管控制台对比出的差异,其展现形式优于Git Bash客户端,可以在界面选择不同提交批次,进行差异对比。 本服务中的差异对比,其对比结果其实是显示您从左侧仓库版本向右侧仓库版本合并时对右侧仓库内文件所产生的影响,所以如果您想全面了解两个文件版本的差异,可以调整左右位置后再次对比,结合两次结果了解全部差异。