为什么 Github 要把代码合并请求称为 pull request 而不是 push request?

2017-06-20 00:51:00 +08:00
 changwei

https://stackoverflow.com/questions/21657430/why-is-a-git-pull-request-not-called-a-push-request

我看了这里面的解释,感觉还是不够有说服力啊

我的理解是:我做了一些修改,我请求把我的修改 push 到你的仓库,然后你 review 一下我的代码,如果没问题就接受请求 merge,这样的话叫做 push request 岂不是更合适?因为这个操作是我主动发起的。pull 是仓库主向我 fork 的仓库发起的操作,那么 pull request 这种操作应该是要上游仓库主来向我发起啊,而不是我主动让上游仓库主来 pull 我仓库中的代码。

7272 次点击
所在节点    问与答
22 条回复
1stlulu
2017-06-20 00:57:30 +08:00
一句话
楼主不能把自己的改动 push 到别人的 repo 里,因为没有权限,所以要有权限的人把您的改动 pull 到自己 repo 里。
FrankFang128
2017-06-20 00:58:35 +08:00
Please pull me ~~~~(>_<)~~~~

所以是 pull request
cxbig
2017-06-20 01:01:04 +08:00
合并是 merge
pull 是从远程拉回本地,push 是把本地推送到远程,感受一下这两个动作的方向
如果你拉下来的 branch 和本地 working branch 不一致,pull 同时实现了 merge 功能而已
cxbig
2017-06-20 01:13:12 +08:00
至于 Pull Request,是当你没有权限 merge 到该分支的时候提出的申请
这个动作可以是同 repo 的 develop 到 master,或者你 fork 的项目 到原项目
操作是对方确认,那么站在对方的角度,这个动作是从你的分支 pull 到他的分支
hwding
2017-06-20 01:17:34 +08:00
可以理解成来自 pull 的 request 吧,我是这么想的。
shoaly
2017-06-20 05:57:49 +08:00
因为 pull request 后续操作就是 pull, 所以这是一个 pull 的 request
goool
2017-06-20 06:14:21 +08:00
叫 "pull request" 确实不那么直观,因为有个视角转换。

gitlab.com 把这个动作叫做 "merge request" 是更好的选择。

pull 只描述了仓库主人收到你的请求后采取的第一个动作,而 merge 描述了整个请求与受理的结果。
21grams
2017-06-20 07:52:42 +08:00
同意楼上,明显 merge request 更合理,更容易理解,我开始用 github 的时候,这个 pull request 让我迷惑了好久。
paulagent
2017-06-20 07:58:42 +08:00
一楼解释的很清楚了。主要是个角度问题
Biwood
2017-06-20 08:24:38 +08:00
“我做了一些修改,我请求把我的修改 push 到你的仓库”,你是认真的?你参与别人的项目时不都是先 fork 一下,仓库 copy 一份到你自己名下了,你只能往自己的仓库 push,怎么 push 到别人的仓库了?要是人人都能 push 到别人的仓库,那原仓库所有者不得疯了。

"pull request"的意思是:请求目标仓库管理者 pull 我的仓库里的代码。主动权在目标仓库那里。
pull = fetch + merge,先获取你仓库里的代码,再合并你的改动,完全符合逻辑。
gimp
2017-06-20 08:29:45 +08:00
1 2 L 解释的挺明白

如果叫 merge request 就更好了
SharkIng
2017-06-20 09:18:29 +08:00
request 是请求被给或者被做,“ the act of asking for something to be given or done ” 说白了就是你请求别人干什么
你能请求别人 push 么?肯定不符合逻辑,像 1L 和 2L 说的。所以你只能请求别人 pull 你的 code。或者当然说成 merge 也可以,但是有时候 pull 并不代表 merge
0asis
2017-06-20 09:27:59 +08:00
我 boss 教我用 git 的时候一直说的就是 merge request
felinx
2017-06-20 10:19:35 +08:00
不是你想 push 就能 push,也不是每个 push 都值得 push,不然岂不是乱套。

所以 push 没权限和全力,只能“求”人 pull
SourceMan
2017-06-20 10:20:38 +08:00
你看看 gitlab 的 merge request 结合看看是不是好理解了
shihty5
2017-06-20 10:40:25 +08:00
前面的回答很好 没必要叫 Merge Request

因为 Pull = Fetch + Merge

看看啥东西 + 合并到我的仓库
DingSoung
2017-06-20 10:41:31 +08:00
@1stlulu 终于理解通了。 一直以来被这个别扭坏了
mooncakejs
2017-06-20 10:46:47 +08:00
本意是 please pull my branch and merge to your resp.
blackjar
2017-06-20 11:27:32 +08:00
按照 gitlab 的叫 merge request 最好 pull request 容易误导
cevincheung
2017-06-20 11:33:41 +08:00
反过来 request pull 还好理解点。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX