git 进行版本控制流程
- 到apache spark 的 github 页面点击fork按钮
- github账户中会出现spark这个项目
- 在本地电脑上使用如下命令,得到一个叫spark的文件夹
git clone https://github.com/darlwen/spark.git
- 进入该文件夹,使用如下命令添加apache/spark的远程地址
git remote add upstream https://github.com/apache/spark.git
- 使用如下命令得到apache/spark的最新代码。当前在自己fork的spark代码仓库的master分支上,这个分支就留作跟踪upstream的远程代码
git pull upstream master
- 接下来开始贡献自己的代码。 按照开发惯例,一般不在自己代码仓库的master上提交新的代码,而是需要为每个新的功能或者bugfix新增一个新的branch,使用如下命令创建一个新的分支,现在可以在这个新的分支上更改代码
git checkout -b lda
- 添加代码并提交代码
git add
git commit -m "comments of your code" - 提交pull request前合并冲突。在提交代码更新的过程中,经常遇到的一个问题是: 远程的upstream即(apache/spark)已经有了新的更新,从而导致在进行pull request时出现conflict。为了避免这个问题,可以在pull request前手动把远程其他开发者的commit与自己的commit合并。使用:
git checkout master //切换到自己的主分支 git pull upstream master //拉出apache/spark的最新代码 git checkout lda //切换回lda分支 git rebase master // 将master的代码同步更新到lda中 git push origin lda //将自己在lda中的代码更新到自己github代码仓库的lda分支中去
- 提交pull request。这时候可以在自己的仓库页面跳转到自己的lda分支,然后点击new pull request. 按照spark的风格规定,我们需要在新的pull request的标题前加上JIRA代号。所以我们需要在https://issues.apache.org/jira/上创建一个新的JIRA, 例如https://issues.apache.org/jira/browse/SPARK-2859。然后将SPARK-2859这个代号加入到pull request的标题里。例如:https://github.com/apache/spark/pull/1782。
Pull Request的描述的写法很重要,有几个要点:
(1)在pull request中,一定要记得加上你提交的JIRA的URL, 方便JIRA系统自动的把Pull Request链接加上去,例如:https://issues.apache.org/jira/browse/SPARK-2859.
(2) pull request的描述要言简意赅,将清楚你要解决的问题是什么,你怎么解决的。可以多参考其他committer提交的PR。
- 等待Spark committer审核你的PR。如果需要进一步的修改,可以继续在本地的lda分支下commit新的代码,所有新的代码会在"git push origin lda"之后,自动被加入之前提交的pull request中,方便进 行问题的跟踪和讨论。
- 如果一切顺利,具有apache/spark.git写权限的committer就会将代码merge到apache/spark.git的master分支。
- ps: 代码merge之后,就可以将lda这个分支删掉了。
- 参考:
- How to use github pull request: https://help.github.com/articles/using-pull-requests
- github的多人协作: https://gist.github.com/suziewong/4378619
- How to rebase a pull request:https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request
- https://issues.apache.org/jira/browse/SPARK-2859
- https://github.com/apache/spark/pull/1782