git pull-request和git pull和git push之间有什么关系?

时间:2019-01-16 14:12:51

标签: git pull-request

git pull-requestgit pullgit push之间有什么关系?

假设我和其他同伴共享一个远程存储库。我们每个人都有一个单独的本地存储库。

当我完成本地存储库中的功能后,我想与同行分享我的工作。

  1. 我应该使用git pull-request来问我的同伴向我的git pull 本地存储库迁移到各自的存储库?
  2. 我应使用共享的远程存储库运行git pull-request吗? 其网址参数?如果是,该命令是否询问管理员 从我的本地存储库到git pull的共享远程存储库 到远程存储库?以下三个消息来源似乎在说 是的。

    git pull-request的联机帮助页上说:“生成请求 您的上游项目将更改放入他们的树中。”

    https://stackoverflow.com/a/49432466/10082400在某人之后说 运行git request-pull,“ ...然后Linus可以直接从 这个其他存储库,或者更可能的是,从那里获取git 决定是否以及如何合并它们”

    https://github.com/torvalds/linux/blob/master/Documentation/process/submitting-patches.rst#16-sending-git-pull-requests 说:“如果您有一系列补丁, 让维护者将它们直接拉入子系统存储库 进行git pull操作。”

  3. 我是否需要{@ 1}从本地人{ 我运行git push之前将存储库迁移到共享远程存储库?

    如果git request-pull会请求,为什么需要 共享远程存储库的管理员来完成我的工作 从本地存储库到共享远程服务器的功能 存储库?

    git request-pull的联机帮助页提供了一个示例,其中git pull-request 在示例中git push git push git pull-request". Is git pull-request`之前?

      

    想象一下,您是在主分支的基础上建立工作的。   v1.0版本,并希望将其集成到项目中。首先你   将更改推送到您的公共存储库,以供其他人查看:

    necessary before
         

    然后,您运行以下命令:

    git push https://git.ko.xz/project master
    
         

    它将向上游产生一个请求,总结更改   在v1.0版本和您的master之间,将其从您的   公共存储库。

谢谢

1 个答案:

答案 0 :(得分:1)

git request-pull命令在获得适当输入后会构建适当的电子邮件。从字面上看,这就是它所做的全部。电子邮件将转到命令的标准输出;如果您要这样做,则取决于您自己收集并发送电子邮件。

git pull命令运行git fetch,然后运行第二个Git命令,通常是git mergegit rebase。 (对于在没有提交的情况下拉入一个空存储库的特殊情况,它将作为第二个命令运行git checkout。)有关此的所有其他StackOverflow问题。

git push命令让您的Git调用其他一些Git并交换信息,发送您必须发送以完成最后一步的所有提交对象和其他内部Git对象,然后作为最后一步,给出礼貌的请求(非强制推送),比较和交换命令(强制租赁)或命令样式请求(强制推送),要求其他Git set 引用某些内容特定的哈希ID。

接下来的三个问题是关于如何使用这些各种命令以及它们构建有用的工作流的能力。有许多种不同的方法可以做到这一点。如果不对网络访问的任何限制(或缺乏限制)做出很多假设,就不可能规定一种适合所有人的工作流程。 Git本身更多是用户可以使用的工具系统,而不是针对特定问题的特定解决方案。

仍然,我们可以在一定程度上解决这三个问题:

  
      
  1. 我是否应该使用git pull-request来要求同伴从我的本地存储库到其各个存储库git pull
  2.   

如果愿意,可以。请注意,要使它们成功完成 ,它们必须至少在本地存储库中具有读取权限(可能是通过网络访问权限)。

  
      
  1. 我是否应该使用共享远程存储库作为URL参数运行git pull-request?
  2.   

如果愿意,可以。但是,如果您使用的是共享的远程存储库,则git request-pull几乎是完全多余且毫无意义的。

  

如果是,该命令是否要求共享远程存储库的管理员从我的本地存储库git pull到远程存储库?

否;它会要求他们从共享的远程存储库中提取数据,我们可能会假设它们已经经常这样做了。尝试运行git request-pull来查看。由于其输出进入标准输出,因此您将准确看到将其输出通过电子邮件发送给其他人的内容。但是,它会特别指出:

The following changes since commit %H:

  %s (%ci)

are available in the Git repository at:

  $url $pretty_remote

for you to fetch changes up to %H:

  %s (%ci)

,其中填充了各个$%字段。$url部分实际上是您作为URL参数传递的内容,而$pretty_remote是通过剥离{来自refspec参数的目标部分的{1}}或refs/heads/(如果提供)。有关更多详细信息,请参见refs/代码(这是一个简单的shell脚本)。

  
      
  1. 在运行git-request-pull之前,我需要git push从本地存储库到共享远程存储库的功能工作吗?
  2.   

不。与问题2一样,如果您具有共享存储库,则git request-pull几乎毫无意义。该命令是基于这样的假设而设计的:无论出于何种原因,您没有都拥有一个真正的共享存储库,即您和您的上游只能对彼此的存储库进行 read 访问。

相关问题