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/