pull request 意为:请求开源项目的作者拉取我们的分支。pull request 是网络上高手大拿们相互协作的一个非常好的机制。
如果我们在网上看到一个优秀的开源项目,我们想参与开发,必须先将这个开源项目 fork 到自己的项目下面。
GitHub 这样设计是因为别人的项目对于我们而言,是没有写权限的,这个想想也是非常合理的。我们 fork 完以后的项目在自己的帐号下,才有写的权限,这样我们就可以 clone 下来了。
注意:在我们开发之前,一般都会创建一个新的功能分支。
git checkout -b dev
发送 pull request 的操作是很简单的,这里我们就不截图记录了。
只要开源项目的作者没有关闭 pull request,我们提交的 commit 都会自动在 开源项目的作者那里显示。即后续我们提交的 commit 都会在同一个 pull request 里面。
如果开源项目的作者接受了我们的 pull request 请求,也就是 merge 了我们的 dev 分支,这个时候 pull request 也就关闭了。
那么问题来了,下面的内容是很重要的。如果我们仅仅只是 fork 开源项目到自己账号下面,我们 add commit 都只是在自己账号的项目下操作。这个时候,开源项目的作者也没闲着,他每天也在提交更新,也在 merge 众多合作者的 pull request。因此,我们还要时时将代码与这个仓库联系起来,实时更新。
那么,我们如何获得开源项目的最新代码呢?
添加一个 remote
第 1 步:
git remote add upstream <开源项目仓库 URL >
说明:这里的 upstream 是我们自定义的名字,意为上游的远程主机名。
第 2 步:
我们使用
git remote -v
查看我们的远程主机是否添加成功。这里我们要意识到:我们还是没有权限去 push 到 刚刚添加的远程主机,一定要走 pull request 流程。
第 3 步:我们要做的就是将自己的项目的 master 分支与开源项目作者的 master 分支一样。
git checkout master
git fetch upstream 获取远程主机上这个项目的最新代码,很重要。
git merge upstream/master
附录: 关于 git remote 命令的使用
1、远程主机更换名字
git remote rename upstream daydayup
2、查看远程主机
git remote
3、删除远程主机
git remote rm daydayup