git - pull 请求是 Git 的一部分,还是 GitHub、Gerrit 和 Atlassian Stash 等工具的一项功能?

标签 git github gerrit pull-request bitbucket-server

pull 请求似乎是使用 Git 进行代码审查的常见方式。但是,当使用内置的 git request-pull 或其他工具时,这个术语的含义是否相同尚不清楚。

pull 请求是 Git 的固有功能,还是 GitHub、Gerrit 或 Atlassian Stash 等工具的通用术语?

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

最佳答案

pull 请求是一个简单的概念,它起源于 Git 创建时,但此后已被带到不同的层次。

本质上是您没有推送权限到您想要贡献的存储库,因此您 fork 存储库,制作您的私有(private)副本(顺便说一句,克隆已经这样做了。)然后您为那个存储库做出贡献。然后您请求原始存储库的维护者引入您的更改。因此,您实质上是在提交补丁。

正如我所说,有不同的方法可以做到这一点,但归根结底都是请求维护者引入您的更改,因此得名。创建 Git 的最初目的是 Linux 内核,他们一直在使用邮件列表进行开发。所以对于他们来说, pull 请求实际上是每封电子邮件发送一个补丁;这些补丁实际上是提交对象,前面加上一些普通的电子邮件通信内容——Git 有工具来生成它。

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

Git book有这个例子:

$ 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(-)

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

GitHub 等其他源代码托管商也采用类似方式。当您在 GitHub 上创建 pull 请求时,您只是创建了一个问题,其中包含维护者可以 pull 提交的更多信息。当然,这一切都在一个网站上,他们可以将所有内容相互链接起来,例如提供那些一键 merge 按钮。

但基本概念仍然相同:请求维护者引入您所做的一些更改。唯一的区别是与此请求进行通信的方式。

关于git - pull 请求是 Git 的一部分,还是 GitHub、Gerrit 和 Atlassian Stash 等工具的一项功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289599/

相关文章:

Git 钩子(Hook)不工作

git - Gerrit 尝试配置简单的 rebase

github - 强制 Travis 构建特定的拉取请求或提交它错过的 SHA

azure - 针对具有特定源分支的 master 的拉取请求不会触发 Azure 管道

当前分支和 master 之间的 Git diff 但不包括未 merge 的 master 提交

git - Composer 更新不 pull 最新的开发大师

git - 将 pull 请求 merge 到不同的分支

git - 如何在不丢失 +2 票的情况下一次重新设置 Gerrit 审查的所有提交?

android - 如何解决 "fatal: ambiguous argument ' HEAD~ 1': unknown revision or path not in the working tree"?

git - 如何在多次推送后重新设置 git 历史记录,然后推送更新的历史记录?