如何提交Pull Request - PaddlePaddle/Contrib GitHub Wiki
1、Fork仓库
跳转到PaddlePaddle/Contrib页面,然后点击右上角的Fork
按钮,将会生成一个在自己目录下的Github仓库,https://github.com/YOUR USERNAME/Contrib
。
2、克隆仓库到本地
$ git clone https://github.com/YOUR USERNAME/Contrib
$ cd Contrib
3、同步PaddlePaddle/Contrib主仓库更新
本步骤主要是用于将主库PaddlePaddle/Contrib
中已发生的更新内容同步到自己的本地仓库中。
1)首先,我们先进入到我们的本地仓库目录
$ cd Contrib
2)添加官方的远程仓库
$ git remote add upstream https://github.com/PaddlePaddle/Contrib
3)查看是否添加成功,这个时候我们能看到有两个远程仓库,一个是我们个人目录下的,一个是官方的。
$ git remote -v
origin https://github.com/YOUR USERNAME/Contrib.git (fetch)
origin https://github.com/YOUR USERNAME/Contrib.git (push)
upstream https://github.com/PaddlePaddle/Contrib.git (fetch)
upstream https://github.com/PaddlePaddle/Contrib.git (push)
4)进行更新的同步
$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
4、为自己的研发工作建立本地分支
目前Contrib的功能开发或Bug修复等提交都是在master分支上来保持更新,但是为了保证我们master分支的提交记录干净清晰,我们需要基于master分支建立本地分支进行每一次开发任务的commit和提交PR(pull request)至主仓库,直到PR被Merge完成后,再对建立的任务分支进行删除。
1)首先,我们切换到master分支,基于master分支进行本地分支创建
$ git checkout master
2)创建本地任务分支,分支名字可以自己来定义
$ git checkout -b 分支名
5、安装和使用pre-commit钩子
我们统一使用pre-commit工具来管理Git预提交钩子。它可以帮助我们格式化代码,在commit前做一些自动检查,对于不满足pre-commit检查的更新是无法commit和提交PR到主仓库的,下面我们来进行一下安装和使用(所有命令在本地仓库主目录来完成):
$ cd Contrib
$ 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)
打开个人Contrib仓库页面[https://github.com/YOUR USERNAME/Contrib](https://github.com/YOUR USERNAME/Contrib),点击绿色的Compare & pull request
按钮来进入提交Pull Request的页面,通过页面上的引导可以查看本次PR的变动内容,编写PR的标题和描述(同样要描述清晰)。
提交PR时注意分支选择,因为我们是基于master分支做的开发,所以base fork对应的base分支选择master,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 master
$ git branch -D 分支名
恭喜您顺利完成一次代码的贡献!