作者:匿名用户
链接:https://www.zhihu.com/question/21682976/answer/20835845
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1,090 人赞同了该回答
我尝试用类比的方法来解释一下 pull reqeust。想想我们中学考试,老师改卷的场景吧。你做的试卷就像仓库,你的试卷肯定会有很多错误,就相当于程序里的 bug。老师把你的试卷拿过来,相当于先 fork。在你的卷子上做一些修改批注,相当于 git commit。最后把改好的试卷给你,相当于发 pull request,你拿到试卷重新改正错误,相当于 merge。
当你想更正别人仓库里的错误时,要走一个流程:
先 fork 别人的仓库,相当于拷贝一份,相信我,不会有人直接让你改修原仓库的
clone 到本地分支,做一些 bug fix
发起 pull request 给原仓库,让他看到你修改的 bug
原仓库 review 这个 bug,如果是正确的话,就会 merge 到他自己的项目中
至此,整个 pull request 的过程就结束了。
理解了 pull request 的含义和流程,具体操作也就简单了。以 Github 排名最高的https://github.com/twbs/bootstrap为例说明。
1. 先点击 fork 仓库,项目现在就在你的账号下了
![](https://img.haomeiwen.com/i2969094/212ff1299a9c3778.jpg)
![](https://img.haomeiwen.com/i2969094/46879db6dc33313c.jpg)
2. 在你自己的机器上 git clone 这个仓库,切换分支(也可以在 master 下),做一些修改。
~ git clone https://github.com/beepony/bootstrap.git~cdbootstrap~ git checkout -b test-pr~ git add .&&git commit -m"test-pr"~ git push origin test-pr
3. 完成修改之后,回到 test-pr 分支,点击旁边绿色的 Compare & pull request 按钮
![](https://img.haomeiwen.com/i2969094/937c4ea084385587.jpg)
4. 添加一些注释信息,确认提交
![](https://img.haomeiwen.com/i2969094/0f51dd6d2cc3df2c.jpg)
5. 仓库作者看到,你提的确实是对的,就会 merge,合并到他的项目中
以上就是 pull reqesut 的整个流程,希望对你有帮助~
参考文档:
Fork A Repo - User Documentation
赞同 1.1K55 条评论
分享
收藏感谢收起
![](https://img.haomeiwen.com/i2969094/dbb17d2dfbdbbf9b.jpg)
350 人赞同了该回答
我从单纯的语言学角度解释一下为什么“pull request”这个词组这么令人费解。
先说正确的理解:pull request是一个request,它的目的是让别人pull你的东西。
然而pull和request两个名词直接相连构成偏正短语,二者之间具体是什么关系是不确定的。
思考:water hose, rubber hose, fire hose, garden hose 这四个短语中,两个词之间分别是什么关系?
我第一次看到pull request这个词组的时候,误以为这个request的目的是请求别人允许自己pull别人的东西。
另外,pull和request还都有动词义,放到一起的时候,还可能被误解成动宾短语(pull作动词,request作名词)。
英语中很多单词有多种词性,另外对一串名词直接相连构成词组的句法又比较宽容,这两个性质容易被滥用,造成沟通上的不便。
恰好汉语也具有这两个特点——你把上文中的“pull request”都换成“拉取请求”,看看是不是依然成立?
当然,熟悉了GitHub的工作流程后,你可能就不再感觉pull request这个词组有歧义或是费解了。
这是专业知识消除歧义的典型例子。
赞同 35053 条评论
分享
收藏感谢
![](https://img.haomeiwen.com/i2969094/d46857a3cb01673c.jpg)
匿名用户
199 人赞同了该回答
有一个仓库,叫Repo A。你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Github账号下有了一个Repo A2,。然后你在这个A2下工作,Commit,push等。然后你希望原始仓库Repo A合并你的工作,你可以在Github上发起一个Pull Request,意思是请求Repo A的所有者从你的A2合并分支。如果被审核通过并正式合并,这样你就为项目A做贡献了
网友评论