Contents
尝试Pull Request¶
按部就班地创建GitHub账号并公开自己的源代码并不是什么难事。不过,刚刚接触GitHub的人往往不会或不敢使用Pull Request功能。
Pull Request是社会化编程的象征。GitHub创造的这一功能,可以说给开源开发世界带来了一场革命。不会用这个功能,就等于不会用GitHub。
不过,掌握Pull Request的难度确实较高,刚刚接触GitHub的人在发送PullRequest时,往往会遇到找不到对方的项目或者不知道该如何发送等问题。
什么是Pull Request¶
Pull Request是自己修改源代码后,请求对方仓库采纳该修改时采取的一种行为。
1.开发者 Fork 主仓库到自己账号成为副本仓库
2.在副本仓库完成代码贡献(添加、删除、修改代码等等)
3.将副本修改的内容给主仓库提交 PR (Pull Request)
4.作者审核你提交的代码,并决定是否合并
让Pull Request更加有效的方法¶
●明确标出“正在开发过程中”¶
为防止开发到一半的Pull
Request被误合并,一般都会在标题前加上“[WIP]”字样。WIP是Work In
Progress的简写,表示仍在开发过程中。等所有功能都实现之后,再消去这个前缀。
●不进行Fork直接从分支发送Pull Request¶
如果用户对该仓库有编辑权限,则可以直接创建分支,从分支发送Pull Request。利用这一设计,团队开发时不妨为每一名成员赋予编辑权限,免去Fork仓库的麻烦。这样,成员在有需要时就可以创建自己的分支,然后直接向master分支等发送Pull Request。
仓库的维护¶
所以我们需要将原仓库设置为远程仓库,从该仓库获取(fetch)数据与本地仓库进行合并(merge),让本地仓库的源代码保持最新状态。
●仓库的Fork与clone¶
将octocat/Spoon-Knife作为原仓库,在GitHub上进行Fork,然后clone。
$ git clone https://gitee.com/hujianli94net/test_-gitee_-pr.git
$ git remote -v
origin https://gitee.com/hujianli94net/test_-gitee_-pr.git (fetch)
origin https://gitee.com/hujianli94net/test_-gitee_-pr.git (push)
●给原仓库设置名称¶
我们给原仓库设置upstream的名称,将其作为远程仓库。
$ git remote -v
origin https://gitee.com/hujianli94net/test_-gitee_-pr.git (fetch)
origin https://gitee.com/hujianli94net/test_-gitee_-pr.git (push)
$ git remote add upstream https://gitee.com/Hopper007/test_-gitee_-pr.git
$ git remote -v
origin https://gitee.com/hujianli94net/test_-gitee_-pr.git (fetch)
origin https://gitee.com/hujianli94net/test_-gitee_-pr.git (push)
upstream https://gitee.com/Hopper007/test_-gitee_-pr.git (fetch)
upstream https://gitee.com/Hopper007/test_-gitee_-pr.git (push)
今后,我们的这个仓库将以master作为原仓库的标识符。这个环境下只需要设定一次。
●获取最新数据¶
下面我们从远程仓库实际获取(fetch)最新源代码,与自己仓库的分支进行合并。要让仓库维持最新状态,只需要重复这一工作即可。
我们通过git
fetch命令获取最新的数据,将upstream/master分支与当前分支(master)合并。虽然本次示例没有可以合并的内容,但这一操作确实可以将最新的源代码合并至当前分支。
$ git fetch upstream
$ git merge upstream/master
$ git commit -m "merge brach .."
$ git push origin master
这样一来,当前分支(master)就获得了最新的源代码。各位在创建特性分支,编辑源代码之前,建议先将仓库更新到这一状态。一般情况下master分支都会获取最新代码,很少需要Fork的开发者亲自进行修正。
小结¶
在实际开发现场,Pull Request多少都会与传统的习惯或规范有些冲突。
但是,诸多团队的实践表明Pull Request确实有其显著的效果。作为一名投身于开源开发的程序员,应当尽早适应这一设计。