
# 在Git Bash创建分支并开发代码
![](https://support.huaweicloud.com/usermanual-codeartsrepo/public_sys-resources/caution_3.0-zh-cn.png)
- 具有权限的操作员检查[IP白名单](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0138.html#codeartsrepo_03_0138__section539411401465)。用户如果未配置IP白名单，全部IP均会放行，如果配置了IP白名单，则只允许名单内的IP访问。
- 如果用户在创建commit后，把本地路径带到CodeArts Repo的代码仓库里，用户不能更改提交代码的路径，只能本地删除该文件或者回退commit强制提交，然后重新提交。
 
1. 进入本地仓库目录，打开Git Bash。执行如下命令，基于master分支新建一条分支feature1，并切换到feature1分支。 
   ```
   git checkout -b feature1
   ```
   
   
2. 以下步骤模拟将字符串"hello MR"写入到名为hello_MR.txt的文件中。 
   ```
   echo 'hello MR' > hello_MR.txt
   ```
   
   
3. 将当前目录下所有修改过的文件添加到Git的暂存区中，准备提交到版本库。 
   **需要注意：MAC文件换行符为"/r"，在Git中无法识别，建议用户在本地转换为Linux或Windows格式的换行符后提交，否则会导致合并请求差异、对比页面MAC文件行数存在差异** 。
   ```
   git add .
   ```
   
   
4. 将当前修改的代码提交到本地代码仓库中，并添加一条提交信息。 
   ```
   git commit -m 'hello MR'
   ```
   
   
5. 查看最近一次提交的详细信息。 
   ```
   git log -1
   ```
   
   
6. 执行如下命令，将本地分支feature1推送到用户远程仓库的origin分支，并将本地分支与远程分支建立追踪关系。 
   ```
   git push --set-upstream origin feature1
   ```
   执行此步骤时，如果提示"connect to host \*\*\*\*\*\*\*\*.com port 22: Connection timed out"，表示用户的网络被限制，无法访问代码托管服务，请求助用户本地所属网络管理员。
   
   
7. 进入要新建合并请求的代码仓库首页，选择"合并请求" \> "新建"，选择要发起合并请求的源分支和目标分支。用户可勾选"是否使用临时分支"，如果勾选，那用户将使用新生成的临时分支提交合并请求。在"新建合并请求"页面的下方可以看到两条分支的文件差异对比详情、要合并分支的提交记录信息。如果用户要配置合并请求的变更主题，请参考[配置变更主题](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0010.html#codeartsrepo_03_0010__section0323191215596)。
#### 相关文档
- 提交本地代码到CodeArts Repo，需要使用git push命令，git commit只是将本地仓库中的修改保存到本地仓库中，每次commit都会生成一个新的commit记录，记录了修改的内容、作者、时间等信息。commit操作只会将代码更改保存到本地仓库中，并不会将修改同步到远程仓库。
- 当用户向CodeArts Repo推送代码时，提示"You are not allowed to push code to protected branches on this project"。原因是该分支为受保护分支，用户没有权限推送代码到这个分支。解决方案：具有仓库"设置"权限的成员进入代码仓库详情页，选择"设置 \> 策略设置 \> 保护分支"，单击![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002251195841.png)，解除对该分支的保护。
- 向CodeArts Repo推送代码时，提示"src refspec master does not match any"。原因是用户没有使用git add、git commit命令依次将文件从工作区加入暂存区。解决方案：在执行git push命令之前，请先使用git add、git commit将修改后的文件提交至暂存区中，再使用push命令推送至云端代码仓库中。
- 向CodeArts Repo推送代码时，提示"error: failed to push some refs to 'https://codehub"。原因是CodeArts Repo的该仓库与本地仓库代码不一致，所以从本地提交代码的操作被拒绝。解决方案：先使用git pull命令拉取CodeArts Repo远端仓的代码，与本地代码仓库合并，再使用git push命令推送代码到CodeArts Repo。
- 使用git pull命令拉取代码失败，提示"Merge branch "master' of https://codehub/testMaven Please enter a commit message to explain why this merge is necessary"。原因是CodeArts Repo的代码仓库与用户本地仓库内容不一致，拉取代码时会跟本地代码进行合并（merge），弹框是提示是否确认本次merge操作，并提交备注信息。解决方案请参考[使用git pull拉取代码失败，报错"Merge branch 'master' of https://xx.com Please Enter a commit"](https://support.huaweicloud.com/codeartsrepo_faq/codeartsrepo_06_0005.html)章节。
- 执行步骤4时，如果报错"unable to auto-detect email address"，原因是未设置用户名、邮箱。用户可以执行如下命令配置用户的个人信息。
  ```
  git config --global user.name {用户的名字}
  git config --global user.email {用户的邮箱}
  ```
  
- 执行步骤6时，如果报错"'origin' does not appear to be a git repository..."，原因是远程不存在origin这个仓库名称，具体解决方案请参考.[执行git push 命令时，报错'origin' does not appear to be a git repository...](https://support.huaweicloud.com/codeartsrepo_faq/codeartsrepo_06_0012.html)章节。
- 执行步骤3时，如果报错"Not a git repository"，原因是用户不在当前代码仓目录下，需要使用cd命令进入代码仓库目录下。
- 提交合并请求时，如果报错"failed to push some refs to '....git'"，请参考[解决合并请求冲突](https://support.huaweicloud.com/codeartsrepo_faq/codeartsrepo_06_0041.html)。
- 执行步骤6时，提示"Connection reset by test port 22 fatal: Could not read from remote repository."，原因是网络不稳定，该请求被重置，如果该问题是偶现，可能为网络原因。
- 如果用户的仓库是"所有访客只读"，当用户新建或者修改合并请求"标题"时，且标题内容包含违规词汇，新建或者修改合并请求标题将失败，并在右上角报错提示"合并请求标题存在违反法律法规的内容，请修改后重新提交。"
- 如果用户的仓库是"所有访客只读"，当用户的"描述"包含违规词汇或者图片，会审核不通过，在合并请求标题右侧将显示**标题或描述内容审核不通过，请及时修改，否则合并请求仅项目内成员可见。**并且此合并请求将不对其他成员展示，修改并合规后，将正常展示此合并请求信息。
- 如果用户的仓库是"所有访客只读"，当用户的"评审意见"包含敏感词汇或者图片，将会在评价所在行显示"审核不通过"。
 
