如何贡献 
=========================

OceanBase 数据库是一个开源的项目。欢迎您贡献代码或文档。本文介绍如何为该项目做贡献。

开始之前 
-------------------------

欢迎您为 OceanBase 数据库贡献代码或文档。在您开始贡献之前，您需要签署贡献者许可协议（Contributor Licence Agreement，简称 CLA）。详细信息，参考 [什么是 CLA](https://en.wikipedia.org/wiki/Contributor_License_Agreement)。点击 [OceaBase CLA](https://cla-assistant.io/oceanbase/oceanbase?pullRequest=108)，点击 **Sign in with GitHub to agree** 按钮签署协议。

贡献指南 
-------------------------

**注意**

本节介绍如何为 `master` 分支创建 PR。为其他分支创建 PR 的步骤与此按照以下步骤提交 Pull Request（简称 PR）：
类似。

**步骤 1：Fork 项目仓库** 

1. 访问项目的 [GitHub 地址](https://github.com/oceanbase/oceanbase)。

   

2. 点击 Fork 按钮创建远程分支。

   




**步骤2：克隆分支到本地** 

1. 定义工作目录。

   ```bash
   # 定义工作目录
   working_dir=$HOME/Workspace
   ```

   

2. 配置 GitHub 用户名。

   ```bash
   user={GitHub账户名}
   ```

   

3. 克隆代码。

   ```bash
   # 克隆代码
   mkdir -p $working_dir
   cd $working_dir
   git clone git@github.com:$user/oceanbase.git
   # 或: git clone https://github.com/$user/oceanbase.git
   
   # 添加上游分支
   cd $working_dir/oceanbase
   git remote add upstream git@github.com:oceanbase/oceanbase.git
   # 或: git remote add upstream https://github.com/oceanbase/oceanbase.git
   
   # 为上游分支设置 no_push
   git remote set-url --push upstream no_push
   
   # 确认远程分支有效
   git remote -v
   ```

   




**步骤 3：创建新分支** 

1. 更新本地 `master` 分支。

   ```bash
   cd $working_dir/oceanbase
   git fetch upstream
   git checkout master
   git rebase upstream/master
   ```

   

2. 基于本地 `master` 分支创建新分支。

   ```bash
   git checkout -b new-branch-name
   ```

   




**步骤 4：开发** 

在 `new-branch-name` 上开发并保存更改。

**步骤 5：提交更改** 

```bash
# 检查本地文件状态
git status

# 添加您希望提交的文件
# 如果您希望提交所有更改，直接使用 `git add .`
git add <file> ... 
git commit -m "commit-message: update the xx"
```



**步骤 6：保持开发分支与上游分支同步** 

```bash
# 在开发分支执行以下操作
git fetch upstream
git rebase upstream/master
```



**步骤 7：推送更改至远程分支** 

```bash
# 在开发分支执行以下操作
git push -u origin new-branch-name
```



**步骤 8：创建 PR** 

1. 访问您 Fork 的仓库。

   

2. 单击 `new-branch-name` 分支旁的 `Compare & pull request` 按钮。

   
















