拉请求是Git的一部分,还是GitHub,Gerrit和Atlassian Stash等工具的功能?

use*_*984 35 git github gerrit pull-request bitbucket-server

拉请求似乎是使用Git进行代码审查的常用方法.但是,当使用内置git request-pull或不同的工具时,这个术语是否意味着相同还不清楚.

pull请求是Git的内在功能,还是像GitHub,Gerrit或Atlassian Stash这样的工具的常用术语?

代码审查的讨论和"结果"是存储在Git提交历史记录中还是存储在单独的数据库中?

pok*_*oke 30

拉取请求是一个简单的概念,它源于Git创建时,但从那时起被带到了不同的层次.

本质上是你没有对你想要贡献的存储库的推送权限,所以相反,你分叉存储库,制作你的私人副本(一个克隆已经完成了这个.)而你贡献给那个.然后,您要求原始存储库的维护者提取您的更改.所以你实际上是在提交一个补丁.

正如我所说,有不同的方法可以做到这一点,但这一切都归结为要求维护者提取你的更改,因此得名.最初为Git创建的目的是Linux内核,他们一直在使用邮件列表进行开发.所以对于他们来说,拉取请求实际上是每封电子邮件发送一个补丁; 这些补丁实际上是一些正常的电子邮件通信前缀的提交对象--Git有生成这个的工具.

git request-pull是一个类似的工具,用于生成请求拉取请求的消息.但在这种情况下,它更接近拉动的想法.虽然可以应用补丁,但request-pull实际上创建的请求会告诉维护者从不同的远程存储库中提取更改.

Git的书有这个例子:

$ git request-pull origin/master myfork
The following changes since commit 1edee6b1d61823a2de3b09c160d7080b8d1b3a40:
  John Smith (1):
        added a new function

are available in the git repository at:

  git://githost/simplegit.git featureA

Jessica Smith (2):
      add limit to log function
      change log output to 30 from 25

 lib/simplegit.rb |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
Run Code Online (Sandbox Code Playgroud)

所以它实际上只是一个生成消息来执行底层概念的实用程序.

像GitHub这样的其他源代码托管商也这样做.当您在GitHub上创建拉取请求时,您只需创建一个问题,其中包含维护者可以提取的提交的更多信息.当然,它们都在一个网站上,它们可以将所有内容链接起来,并提供一些单击合并按钮.

但基本概念仍然是相同的:要求维护者引入您所做的一些更改.唯一的区别是这个请求的沟通方式.


bla*_*ide 6

git request-pull命令可用于在本地git中创建“拉取请求”。运行时,Git会生成对项目所做更改的摘要以及可从中提取代码的Git存储库URL。这可以被邮寄到邮件列表或项目的维护者,那么谁可以在改变自己的资料库。

本节的的临Git的书中包含了更具体的信息git request-pull的命令。