57

我们最近从 SVN 迁移到 Git。我们在 LAN 网络中的一台机器上设置了一个裸存储库,并在其他机器上克隆。现在,当任何人进行更改和提交时,我们希望他将拉取请求发送到裸存储库(通过告知或发送电子邮件或任何其他方式),之后将通过更改并将其拉到裸存储库(与它的工作原理相同) GitHub)。

我们需要安装任何接口还是 Git 本身有一些命令?

4

3 回答 3

78

Git(软件)和 GitHub(Web 服务)都有一个名为“拉取请求”的概念,不幸的是它们并不完全相同。

本机 Git

本机 Gitrequest-pull命令有一个非常简短的手册页,其中包含以下一句话描述:

将两次提交之间的更改汇总到标准输出,并在生成的摘要中包含给定的 URL。

这是一个相当低级的命令,它生成适合发布到邮件列表的更改的简短摘要。其他用户可以使用此“拉取请求”中发布的 URL 手动将更改拉取到他们自己的存储库中。

GitHub 拉取请求

使用GitHub Web 服务时,Pull Request是一个功能齐全的交互式协作工具。GitHub 拉取请求具有:

  • 比单个提交摘要更详细的更改描述
  • 通知自动发送给选择观看项目的用户
  • 在线评论界面,其他人可以在其中评论提议的更改
  • 用于记录有关提交的对话的讨论评论
  • 拉取请求的集中管理,因此它们不会丢失

值得注意的是, Linus对这两个功能的相对实用性有自己的看法。

结论

上述两个“拉取请求”特性在精神上相似,但在实现上完全不同。特别是,该git request-pull命令不能用于在 GitHub 上创建新的 Pull Request。如果您想支持“拉取请求”类型的功能,您有多种选择:

  • 使用 GitHub。这肯定涉及最少的工作,但如果你的项目不是公开的,你将不得不支付 GitHub 来托管一个私有存储库。有些人可能对这种选择感到不舒服。
  • 使用格里特。Gerrit 是一个可以下载的开源服务器程序,它提供了许多与 GitHub 中可用的功能相似的功能。它特别适合协作代码审查。
  • 使用git request-pull和邮件列表。使用这种方法需要您的工程师更加自律,因为很容易放错地方或错误处理邮件列表消息。没有与此方法相关的中央问责制。
于 2011-06-04T07:19:37.180 回答
57

术语“拉取请求”不是github 特定的术语。

有一个 git request-pull 命令,你可以在这里阅读更多信息:http: //linux.die.net/man/1/git-request-pull

对于一些更深入的解释,并为您节省一些谷歌搜索:

顺便说一句,这不是一个新功能。

编辑:这个替代答案是在@Greg Hewgill 最初接受的答案被重写之前做出的。我发布它是因为这是我一直在寻找的答案,并且我认为它适合关于为不需要使用 github 的用户执行拉取请求的问题(是的,不是每个使用 git 的人都使用 github,至少不是一直使用)。既然原始答案已被重写,使这种差异变得明确,我将按照我最初发布它的方式留下这个答案,仅供记录。

于 2012-05-15T17:07:40.460 回答
10

这样做的“git方式”将是所有开发人员在服务器上都有自己的公共裸存储库(读取所有人的访问权限,为开发人员自己编写访问权限)作为他们的“来源”。如果你喜欢一个额外的“主干”(或“稳定”或任何你想称之为的)裸仓库,一些或所有开发人员都有写访问权限。开发人员将他们的 repo 镜像到他们的公共 repo 上,并从其他开发人员那里拉取。这样一来,如果您将某些内容推送到您的公共 repo 中,您就不必担心它还不起作用。(开发人员可以从你那里拉到一个测试分支,看看它是否有效。)当你有一个稳定的规范分支时,你可以将它推送到“主干”存储库。

于 2011-06-06T08:16:23.830 回答