我们最近从 SVN 迁移到 Git。我们在 LAN 网络中的一台机器上设置了一个裸存储库,并在其他机器上克隆。现在,当任何人进行更改和提交时,我们希望他将拉取请求发送到裸存储库(通过告知或发送电子邮件或任何其他方式),之后将通过更改并将其拉到裸存储库(与它的工作原理相同) GitHub)。
我们需要安装任何接口还是 Git 本身有一些命令?
我们最近从 SVN 迁移到 Git。我们在 LAN 网络中的一台机器上设置了一个裸存储库,并在其他机器上克隆。现在,当任何人进行更改和提交时,我们希望他将拉取请求发送到裸存储库(通过告知或发送电子邮件或任何其他方式),之后将通过更改并将其拉到裸存储库(与它的工作原理相同) GitHub)。
我们需要安装任何接口还是 Git 本身有一些命令?
Git(软件)和 GitHub(Web 服务)都有一个名为“拉取请求”的概念,不幸的是它们并不完全相同。
本机 Gitrequest-pull
命令有一个非常简短的手册页,其中包含以下一句话描述:
将两次提交之间的更改汇总到标准输出,并在生成的摘要中包含给定的 URL。
这是一个相当低级的命令,它生成适合发布到邮件列表的更改的简短摘要。其他用户可以使用此“拉取请求”中发布的 URL 手动将更改拉取到他们自己的存储库中。
使用GitHub Web 服务时,Pull Request是一个功能齐全的交互式协作工具。GitHub 拉取请求具有:
值得注意的是, Linus对这两个功能的相对实用性有自己的看法。
上述两个“拉取请求”特性在精神上相似,但在实现上完全不同。特别是,该git request-pull
命令不能用于在 GitHub 上创建新的 Pull Request。如果您想支持“拉取请求”类型的功能,您有多种选择:
git request-pull
和邮件列表。使用这种方法需要您的工程师更加自律,因为很容易放错地方或错误处理邮件列表消息。没有与此方法相关的中央问责制。术语“拉取请求”不是github 特定的术语。
有一个 git request-pull 命令,你可以在这里阅读更多信息:http: //linux.die.net/man/1/git-request-pull
对于一些更深入的解释,并为您节省一些谷歌搜索:
顺便说一句,这不是一个新功能。
编辑:这个替代答案是在@Greg Hewgill 最初接受的答案被重写之前做出的。我发布它是因为这是我一直在寻找的答案,并且我认为它适合关于为不需要使用 github 的用户执行拉取请求的问题(是的,不是每个使用 git 的人都使用 github,至少不是一直使用)。既然原始答案已被重写,使这种差异变得明确,我将按照我最初发布它的方式留下这个答案,仅供记录。
这样做的“git方式”将是所有开发人员在服务器上都有自己的公共裸存储库(读取所有人的访问权限,为开发人员自己编写访问权限)作为他们的“来源”。如果你喜欢一个额外的“主干”(或“稳定”或任何你想称之为的)裸仓库,一些或所有开发人员都有写访问权限。开发人员将他们的 repo 镜像到他们的公共 repo 上,并从其他开发人员那里拉取。这样一来,如果您将某些内容推送到您的公共 repo 中,您就不必担心它还不起作用。(开发人员可以从你那里拉到一个测试分支,看看它是否有效。)当你有一个稳定的规范分支时,你可以将它推送到“主干”存储库。