为了统一大家贡献代码的方式并保证以后有新成员加入能尽快熟悉如何贡献代码,制定此流程。所有贡献者应当按照此流程贡献代码。
参考资料:http://blog.csdn.net/zhangdaiscott/article/details/17438153
目前团队采用分组制,请小组成员去 fork 组长的, 组长 fork testerhome 的。
组员统一按照下面的流程以 pull request 形式提交,组长在下面流程的基础上 merge 组员的 pull request 后发 pull request 给 testerhome(为了能方便地找到作者,里面应包含各组员的 pull request 的 merge 记录 )。
除特别情况,尽量不要直接在 testerhome 的代码库中 commit 以保证所有变更都有第三方评审。
第 1 步. 在 github 上 fork 你想修改代码的代码库(如 testerhome/appium )
第 2 步. git clone 你 fork 的代码库到本地
$ git clone your/repo/url
第 3 步. 在本地 根据你这次修改的目的建立一个主题 ( topic ) branch 修改你的代码。例如你想修复原项目一个和 unicode 相关的 issue :
$ git branch fix-unicode-error
$ git checkout fix-unicode-error
第 4 步. 在主题 branch 下完成需要的工作。
在本地不断地 修改/add/commit/reset/revert ,也可以不断 pull 到自己的 github 库上。
git rebase upstream/master fix-unicode-error
第 5 步. 准备发送 pull request
考虑到本地修改可能会存在不少琐碎的历史,所以发送 pull request 前需要压缩请求(squash),把本地多个 commit 合并成一个。
git checkout master
git merge --squash fix-unicode-error
git commit
然后在 commit 交互界面中把 log 改为你此次发送 pull request 的 目的(如这里的目的是 fix unicode error )
注意:此处的 log 及下一步的 pull request log 中都 使用纯英文。
第 6 步. 发送 pull request。
在 github 界面有个 pull request 按钮。点击去后左边是 base branch ,右边是 head branch 。
base branch:相当于 target branch ,你希望 Pull Request 被 merge 到上游项目的哪个 branch 里。
head branch:相当于 source branch ,你希望自己开发库里的哪个 branch 被用来进行 Pull Request(这里应该用 master branch )。
选择完后,下面会出现 diff 信息及包含的 commit 历史。确认无误后提交并在 log 中注明此次提交的目的。
至此,一个完整的贡献流程跑完。下次再跑的时候,可以直接从第三步开始。