如何在Git上发送pull请求

我们最近从SVN迁移到Git。 我们已经在局域网中的一台机器上build立了一个裸存储库,并在其他机器上进行了克隆。 现在,当任何人做了更改和提交,我们希望他发送拉请求到裸露的回购(通过告诉或电子邮件或任何其他方式)之后,将通过修改并将其拉到裸仓库(相同的工作GitHub上)。

我们是否需要安装任何界面,或者在Git中有一些命令?

Git(软件)和GitHub(networking服务)都有一个叫做“pull request”的概念,不幸的是,它们并不完全一样。

原生Git

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

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

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

GitHub拉取请求

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

  • 更详细的描述,而不仅仅是个别的提交摘要
  • 通知会自动发送给select观看项目的用户
  • 一个在线评论界面,其他人可以评论提议的变化
  • 讨论有关落实谈话的讨论意见
  • 拉请求的中央pipe理,所以他们不会迷路

值得注意的是, Linus对这两个特征的相对效用有自己的看法 。

结论

上述两个“拉取请求”特征在精神上是相似的,但是在实现上完全不同。 特别是, git request-pull命令不能用于在GitHub上创build一个新的请求。 如果你想支持“pull request”types的function,你有几种select:

  • 使用GitHub。 这肯定涉及到最less的工作,但是如果你的项目不公开,你将不得不支付GitHub来托pipe一个私有存储库。 有些人可能不适合这种select。
  • 使用Gerrit 。 Gerrit是一个可以下载的开源服务器程序,提供了许多类似于GitHub中可用的function。 它特别适合于协作代码评论。
  • 使用git request-pull和一个邮件列表。 使用这种方法需要你的工程师更多的纪律,因为错误或error handling邮件列表信息很容易。 这种方法没有中央问责制。

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

有一个git请求拉命令,你可以在这里阅读更多关于它: http : //linux.die.net/man/1/git-request-pull

对于一些更深入的解释,并节省您一些使用Googlesearch:

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

编辑:这个替代答案是在@Greg Hewgill最初接受的答案被改写之前作出的。 我发布它,因为这是我正在寻找的答案,我认为它适合问用户不要使用github做用户请求(是的,不是每个人都使用git使用github,至less不是所有的时间)。 现在,重写的原始答案使这种差异明确,我会离开这个答案,我原来只是为了logging的方式发布。

这样做的“好办法”就是所有的开发者在服务器上都有自己的公开裸机存储器(读取所有的存取权限,为开发人员自己编写存取权限)。 如果你喜欢一个额外的“主干”(或“稳定”或任何你想调用它)裸回购,一些或所有开发人员有写权限。 开发人员在他们的公共回购中反映他们的回购,并从其他开发人员那里获得回报。 这样,你不必担心,如果你推到你的公共回购没有工作。 (开发人员可以把你从一个testing分支拉到一个testing分支,看它是否工作。)当你有一个稳定的规范分支时,你可以把它推到“trunk”回购。