最近给 beego 提了几个 pull request (简称PR),都已被接受。在使用pull request的过程中,遇到了一点小问题,才知以前并非真的理解这个流程,故在此做点记录整理。
我以 beego 为例,将pull request的整体使用流程绘图如下:
beego代码库有两个长期分支 master
和 develop
, master
为稳定分支, develop
为开发分支,所有PR都要求提交到 develop
分支。
base fork
的目标分支(这里为 astaxie/beego 的 develop 分支)和 head fork
的目标分支(这里为 youngsterxyf/beego 的 develop 分支)。PR提交后,等待 astaxie/beego 代码库的协作者来review我的PR。 beego
: git remote add beego https://github.com/astaxie/beego.git
develop
分支上执行 git pull beego develop
,这会获取 astaxie/beego develop 分支最新的状态,并 merge 到本地代码库的 develop 分支 git push origin develop
develop
分支会先 merge 到其 master 分支,然后打上新的 tag 。这时我也会把 youngsterxyf/beego 的 master 分支同步到最新状态,流程与 develop 分支相同。 在第3步中,如果发现 base fork
的目标分支和 head fork
的目标分支之间有代码冲突,则需要先在本地代码库对应的分支上解决这个冲突,然后 push 到 youngsterxyf/beego ,再提PR。