
# 配置保护分支规则实施步骤
#### 步骤一：用户自检是否具备操作权限
如果用户要配置项目级的代码分支规则，需要确认是否为项目经理或者项目管理员，请参考[约束与限制](https://support.huaweicloud.com/bestpractice-codeartsrepo/codeartsrepo_04_0013.html#codeartsrepo_04_0013__section18248491413)确认。
如果用户不是项目经理或者项目管理员，可联系该项目的项目经理或者项目管理员配置保护分支规则。
#### 步骤二：配置项目级的保护分支规则
1. 如下图所示，项目经理或者项目管理员，进入要配置项目"Test_Project"的代码托管页面。 
   图1项目"Test_Project"的代码托管页面
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002536202251.png "点击放大")
   
   
2. 在上方导航栏单击"设置 \> 策略设置 \> 保护分支"，单击"新建保护分支"。 
   图2进入"新建保护分支"页面
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002504244716.png "点击放大")
   
   
3. 如下图所示，配置master为保护分支，任何人不能直接推送代码到master分支，仅Committer可合入代码到master分支。 
   图3配置保护分支规则   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352227036.png "点击放大")
   
   
4. 如下图所示，勾选"开启强制继承"，表示该项目下的所有代码仓均使用该保护分支规则。 
   图4开启强制继承   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386110697.png "点击放大")
   
   
 
#### 步骤三：项目经理推送文件到master分支失败演示
1. 任何代码仓成员推送代码文件到仓库之前，需要确认自己是否具备代码的"提交"权限。 
   如下图所示，项目经理进入要推送的代码仓"Test_Repo"，单击上方导航栏"设置 \> 安全管理 \> 权限管理"，单击"代码"。
   图5项目经理确认是否具备代码的"推送"权限   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386077633.png "点击放大")
   
   
   
2. 项目经理确认具备"推送"权限后，如下图所示，单击右上角"克隆/下载 \> 用HTTPS克隆"，单击![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386115585.png)复制代码仓的HTTPS地址。
   
   图6复制HTTPS地址   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352235028.png "点击放大")
   
   
3. 如下图所示，执行Clone命令，克隆代码仓"Test_Repo"到本地。 
   图7克隆代码仓"Test_Repo"到本地   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352241600.png "点击放大")
   
   
4. 用户依次执行如下命令，进入代码仓Test_Repo路径下，创建新文件newfile，检查newfile文件是否执行成功。 
   ```
   cd Test_Repo
   touch newfile
   ll
   ```
   图8新建newfile并检验是否成功新建文件   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352402080.png)
   
   
5. 用户依次执行如下命令，执行git add命令，将新文件newtext添加到暂存区；执行git commit命令，表示将这个文件的更改提交到Git的历史中，并说明这次提交是"添加了一个新文件"。 
   ```
   git add newfile
   git commit -m "Add new file"
   ```
   如下图所示，出现红框所示的回显，表示此次提交成功。
   图9提交文件newfile到Git的历史中   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352245488.png)
   
   
6. 用户继续执行git push命令，将本地main分支上最新的提交推送到远程仓库的main分支。 
   ```
   git push
   ```
   如下图所示，出现红框部分，表示推送文件到master分支失败，原因是master为保护分支，**即使用户拥有代码的推送权限，也不能直接推送代码文件到代码仓**。
   图10git push失败   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352418318.png "点击放大")
   
   
 
#### 步骤四：演示Committer合入代码到master分支
1. 如下图所示，项目经理进入代码仓"Test_Repo"的"代码"页签，下拉master分支，单击"新建分支"，填写分支名称为"Test"，单击"确定"。 
   图11新建Test分支   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352599054.png "点击放大")
   
   
2. 如下图所示，在Test分支下，单击"新建文件"。 
   图12单击"新建文件"   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386242781.png "点击放大")
   
   
3. 如下图所示，填写文件名称为Test_File，单击"确定"。 
   图13新建文件Test_File   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386266297.png "点击放大")
   
   
4. 单击上方导航栏的"合并请求"，单击"新建合并请求"。填写"标题"，勾选"使用临时分支"，单击"确认"。 
   图14新建合并请求   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386186897.png "点击放大")
   
   
5. 项目经理在合并请求页签，右上角"合入"按钮置灰，单击"合入"按钮，出现如下图所示的报错。 
   原因是master为保护分支，仅Committer角色可合入代码。
   图15项目经理合入合并请求失败   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352631252.png "点击放大")
   
   
6. 如下图所示，Test_02为Committer角色，项目经理Test联系Test_02合入该合并请求。 
   图16确认Committer角色   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002352476136.png "点击放大")
   
   
7. 如下图所示，Test_02进入合并请求页面，合入了项目经理Test的合并请求。 
   图17Committer合入合并请求   
   ![](https://support.huaweicloud.com/bestpractice-codeartsrepo/zh-cn_image_0000002386202089.png "点击放大")
   
   
 
