Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

如何提交Pull Request

Chunyu Zhang edited this page Mar 12, 2021 · 4 revisions

1、Fork仓库

跳转到PaddlePaddle/book页面,然后点击右上角的Fork按钮,将会生成一个在自己目录下的Github仓库,https://github.com/YOUR USERNAME/book

2、克隆仓库到本地

$ git clone https://github.com/YOUR USERNAME/book
$ cd book

3、同步PaddlePaddle/book主仓库更新

本步骤主要是用于将主库PaddlePaddle/book中已发生的更新内容同步到自己的本地仓库中。

1)首先,我们先进入到我们的本地仓库目录

$ cd book

2)添加官方的远程仓库

$ git remote add upstream https://github.com/PaddlePaddle/book

3)查看是否添加成功,这个时候我们能看到有两个远程仓库,一个是我们个人目录下的,一个是官方的。

$ git remote -v

origin	https://github.com/YOUR USERNAME/book.git (fetch)
origin	https://github.com/YOUR USERNAME/book.git (push)
upstream	https://github.com/PaddlePaddle/book.git (fetch)
upstream	https://github.com/PaddlePaddle/book.git (push)

4)进行更新的同步

$ git fetch upstream
$ git checkout develop
$ git rebase upstream/develop

4、为自己的研发工作建立本地分支

目前book的功能开发或Bug修复等提交都是在develop分支上来保持更新,但是为了保证我们develop分支的提交记录干净清晰,我们需要基于develop分支建立本地分支进行每一次开发任务的commit和提交PR(pull request)至主仓库,直到PR被Merge完成后,再对建立的任务分支进行删除。

1)首先,我们切换到develop分支,基于develop分支进行本地分支创建

$ git checkout develop

2)创建本地任务分支,分支名字可以自己来定义

$ git checkout -b 分支名

5、安装和使用pre-commit钩子

我们统一使用pre-commit工具来管理Git预提交钩子。它可以帮助我们格式化代码,在commit前做一些自动检查,对于不满足pre-commit检查的更新是无法commit和提交PR到主仓库的,下面我们来进行一下安装和使用(所有命令在本地仓库主目录来完成):

$ cd book
$ pip install pre-commit
$ pre-commit install

运行完所有命令做好安装之后就不需要在另外做其他操作了,每次执行git commit时候会自动进行相关的前置检查操作。

6、开始开发

根据自己的任务进行相关的代码和文本编写,编写完成后可以通过git status来查看相关的文件状态,使用git add来将修改文件加入到暂存区,用于后续进行commit操作。

进行commit操作时要带上本次提交的描述信息,描述信息要清晰、简洁、易懂。

$ git commit -m "描述信息"

举个例子:git commit -m "upgrade code that in image_segmentation from 2.0-alpha to 2.0-beta"

7、提交分支到个人远程仓库

$ git push origin 分支名

8、提交PR(Pull Request)

打开个人book仓库页面[https://github.com/YOUR USERNAME/book](https://github.com/YOUR USERNAME/book),点击绿色的Compare & pull request按钮来进入提交Pull Request的页面,通过页面上的引导可以查看本次PR的变动内容,编写PR的标题和描述(同样要描述清晰)。

提交PR时注意分支选择,因为我们是基于develop分支做的开发,所以base fork对应的base分支选择develop,head fork对应的compare分支选择我们创建的任务分支名。

9、签署CLA协议

首次向主仓库提交PR时,需要您签署一次CLA(Contributor License Agreement)协议,以保证您的代码可以被合入,具体签署方式如下:

1)请您查看PR中的Check部分,找到license/cla,并点击右侧detail,进入CLA网站

2)请您点击CLA网站中的Sign in with GitHub to agree,点击完成后会跳转回您的Pull Request页面

以上动作结束后即完成了CLA协议签署。

10、删除远程分支

当提交的PR被成功Merge进主仓库后,我们就可以在PR的页面来操作删除远程仓库的分支。

或者另外一种方式也可以来进行同样的删除远程分支操作

$ git push origin :分支名

11、删除本地分支

最后,将本地的分支也一同删除,围绕本次开发任务的工作就结束了。

$ git checkout develop
$ git branch -D 分支名

恭喜您顺利完成一次代码的贡献!