如何在Git上发送pull请求

jim*_*imy 57 git git-svn pull-request

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

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

Gre*_*ill 77

Git(软件)和GitHub(Web服务)都有一个名为"pull request"的概念,不幸的是它们并不完全相同.

本土Git

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

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

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

GitHub拉请求

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

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

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

结论

上述两个"拉动请求"特征在精神上类似,但在实现上完全不同.特别是,该git request-pull命令不能用于在GitHub上创建新的Pull请求.如果要支持"拉取请求"类型功能,可以有多种选择:

  • 使用GitHub.这肯定涉及最少的努力,但如果您的项目不公开,您将需要支付GitHub来托管私人存储库.有些人可能对这种选择感到不舒服.
  • 使用Gerrit.Gerrit是一个开源服务器程序,您可以下载它提供许多类似于GitHub中提供的功能.它特别适合协作代码审查.
  • 使用git request-pull和邮件列表.使用这种方法需要工程师更多的纪律,因为它很容易错位或错误处理邮件列表消息.这种方法没有中心责任.

  • @Greg:这不是Github特有的.`git-request-pull`(http://www.kernel.org/pub/software/scm/git/docs/git-request-pull.html)是每个Git发行版的一部分...... (8认同)
  • 我已经重写了上述答案,试图解决这些问题. (3认同)
  • 我明白你的意思了.当这种情况发生时,您可以使用`git revert`创建一个新的提交,以撤消bug的更改.然后你推动*new*commit.Git非常灵活,因此如果这是大型团队的问题,您可以让开发人员首先推送到中间存储库.然后,集成工程师将从中间存储库中提取更改,如果测试结果正常,则*然后*将这些更改推送到主存储库.开发人员将从主存储库中提取,以便他们知道他们已经测试了工作代码. (2认同)
  • 这个答案还应该提到 GitHub 克隆,例如 Gitorious 和 Gitlab,它们复制了 GitHub 的 Pull Request 接口。 (2认同)

Jen*_*ens 57

术语"拉取请求" 不是 github特定术语.

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

有关更深入的解释并节省一些谷歌搜索:

这不是BTW的新功能.

编辑:这个替代答案是在@Greg Hewgill最初接受的答案被重写之前做出的.我发布它是因为这是我正在寻找的答案,我认为它适合于询问为不使用github的用户做拉取请求的问题(是的,不是每个人都使用git使用github,至少不是所有时间).既然重写了原始答案,使这个差异明确,我将把这个答案留给我最初发布它的方式只是为了记录.

  • 请注意,GitHub也不会*使用`git request-pull`.请参阅https://github.com/torvalds/linux/pull/17#issuecomment-5654674. (8认同)

Ste*_*aug 10

执行此操作的"git方式"是,所有开发人员都将自己的公共裸存储库(读取所有访问权限,开发人员自己的写访问权限)作为其"来源".如果你喜欢一个额外的"主干"(或"稳定"或任何你想要的东西),那么一些或所有开发人员都可以使用写入权限.开发人员在他们的公共回购中反映他们的回购,并从其他开发人员那里获取.这样你就不用担心,如果你把一些东西推到你的公共仓库还没有用.(开发人员可以从您那里拉到测试分支,看看它是否有效.)当您拥有一个稳定的规范分支时,您可以将其推送到"主干"仓库.