V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
changwei
V2EX  ›  问与答

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

  •  
  •   changwei · 2017-06-20 00:51:00 +08:00 · 7272 次点击
    这是一个创建于 2749 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 我仓库中的代码。

    22 条回复    2017-06-20 12:38:29 +08:00
    1stlulu
        1
    1stlulu  
       2017-06-20 00:57:30 +08:00 via iPhone   ❤️ 8
    一句话
    楼主不能把自己的改动 push 到别人的 repo 里,因为没有权限,所以要有权限的人把您的改动 pull 到自己 repo 里。
    FrankFang128
        2
    FrankFang128  
       2017-06-20 00:58:35 +08:00   ❤️ 6
    Please pull me ~~~~(>_<)~~~~

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

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

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

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

    如果叫 merge request 就更好了
    SharkIng
        12
    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
        13
    0asis  
       2017-06-20 09:27:59 +08:00 via iPhone
    我 boss 教我用 git 的时候一直说的就是 merge request
    felinx
        14
    felinx  
       2017-06-20 10:19:35 +08:00
    不是你想 push 就能 push,也不是每个 push 都值得 push,不然岂不是乱套。

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

    因为 Pull = Fetch + Merge

    看看啥东西 + 合并到我的仓库
    DingSoung
        17
    DingSoung  
       2017-06-20 10:41:31 +08:00
    @1stlulu 终于理解通了。 一直以来被这个别扭坏了
    mooncakejs
        18
    mooncakejs  
       2017-06-20 10:46:47 +08:00
    本意是 please pull my branch and merge to your resp.
    blackjar
        19
    blackjar  
       2017-06-20 11:27:32 +08:00
    按照 gitlab 的叫 merge request 最好 pull request 容易误导
    cevincheung
        20
    cevincheung  
       2017-06-20 11:33:41 +08:00
    反过来 request pull 还好理解点。
    laoyur
        21
    laoyur  
       2017-06-20 12:10:07 +08:00
    send a request for pulling my code ==> send pull request ==> Pull Request
    msg7086
        22
    msg7086  
       2017-06-20 12:38:29 +08:00
    「我做了一些修改,我请求把我的修改 push 到你的仓库」

    这叫做 Merge Request,不是 Pull Request,你看的不是一个东西。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1089 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.