V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
changwei
V2EX  ›  问与答

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

  •  
  •   changwei · Jun 20, 2017 · 7818 views
    This topic created in 3242 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    所以 push 没权限和全力,只能“求”人 pull
    SourceMan
        15
    SourceMan  
       Jun 20, 2017
    你看看 gitlab 的 merge request 结合看看是不是好理解了
    peterontheway
        16
    peterontheway  
       Jun 20, 2017
    前面的回答很好 没必要叫 Merge Request

    因为 Pull = Fetch + Merge

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

    这叫做 Merge Request,不是 Pull Request,你看的不是一个东西。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   987 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 23:11 · PVG 07:11 · LAX 16:11 · JFK 19:11
    ♥ Do have faith in what you're doing.