命令行上的pull请求的Git语法

时间:2017-09-29 02:14:48

标签: git command-line pull-request

我在这里看到了文档:https://git-scm.com/docs/git-request-pull

但我不确定如何将它应用到我想要做的事情上。我推到了分支机构,名为" fix / fixNumberHere"我想合并到一个名为" mergeBranch"使用拉取请求 - 如何将其应用于:

 git request-pull [-p] <start> <url> [<end>]

2 个答案:

答案 0 :(得分:3)

我认为你会使用这种语法:

git request-pull mergeBranch origin fix/fixNumberHere
                 ^^^ start   ^^ url    ^^^ end

我认为更典型的是,大多数Git用户会直接在遥控器上创建拉取请求,例如如果他们使用像GitHub或BitBucket这样的东西。

答案 1 :(得分:0)

取决于远程存储库,git request-pull不再是唯一的选择:借助带有Git 2.29(2020年第四季度)的新服务器端挂钩,可以自动创建PR:

git receive-packman接受“ git push”的请求,学会了将大多数参考更新外包给 new“ proc-receive”钩子

请参见commit d6edc18commit 1702ae6commit c6a6a01commit 31e8595commit b913075commit 63518a5commit 195d6ea,{{3} },commit 15d3af5commit 38b9197(2020年8月27日)由commit 917c612
(由Jiang Xin (jiangxin)Junio C Hamano -- gitster --中合并,2020年9月25日)

commit 6c430a6:添加新的proc-receive钩子

签名人:姜欣

Git调用内部execute_commands函数来处理从客户端发送到git-receive-pack的命令。

无论用户推送了什么引用,只要用户具有写权限,Git都会创建或更新相应的引用。

没有写权限的贡献者不能直接推送到存储库。
因此,贡献者必须将提交内容写入备用位置,并通过电子邮件或其他方式发送拉取请求。
我们将此工作流程称为分布式工作流程

Gerrit 在某些情况下所提供的那样,在集中式工作流程中工作将更为方便。

例如,无法直接推送到分支的只读用户可以运行以下receive-pack git push命令将提交推送到伪引用(具有前缀“ refs/for/”(而不是“ refs/heads/”)来创建代码审查。

git push origin \
    HEAD:refs/for/<branch-name>/<session>  

上例中的<branch-name>可以简单地像“ master”,也可以是更复杂的分支名称,例如“ foo/bar”。
上面的示例命令中的<session>可以是客户端的本地分支名称,例如“ my/topic”。

我们不能通过使用“ pre-receive” +“ post-receive”优雅地实现集中式工作流程,因为Git会调用内部函数“ execute_commands”来创建引用(即使是特殊的伪参考)在两个钩子之间。
即使我们可以通过“ post-receive”钩子删除临时创建的伪引用,但是拥有临时引用对于并发推送也不安全。

因此,添加一个过滤器和一个新的处理程序以支持这种工作流程。

过滤器将检查引用名称的前缀,如果命令具有特殊的引用名称,则过滤器将打开命令的特定字段(run_proc_receive)。
启用了该文件的命令将由新的处理程序(名为“ proc-receive”的钩子)执行,而不是由内部execute_commands函数执行。

我们可以使用此“ proc-receive”命令创建请求请求或发送电子邮件以进行代码审查

挂钩收到命令后,将执行命令,并可能创建/更新不同的引用。

例如,用于伪引用“ refs/for/master/topic”的命令可能会创建/更新不同的引用,例如“ refs/pull/123/head”。
备选参考名称和其他状态在选项行中给出。


在Git 2.30(第2021年第1季度)中,此功能更加强大:receive-packproc-receive挂钩之间的交换未仔细检查错误。

请参见mancommit 80ffeb9commit f65003bcommit cf3d868(2020年11月11日)。
(由Jiang Xin (jiangxin)Junio C Hamano -- gitster --中合并,2020年11月25日)

commit 8f8f10a:将消息轻轻地写到proc-receive

报道者:约翰内斯·辛德尔林
建议:杰夫·金
签名人:姜欣

Johannes在CI / PR构建的osx-clang作业中的t5411/test-0013-bad-protocol.sh中发现了死机,并在将--stress选项与以下错误消息一起使用时遇到问题:

fatal: unable to write flush packet: Broken pipe
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly  

在此测试用例中,“ proc-receive”挂钩发送错误消息并较早死亡。

尽管管道另一侧的“ receive-pack”应该将“ proc-receive”钩子的错误消息转发给客户端,但是这样做没有成功。
这是因为“ receive-pack”使用packet_write_fmt()packet_flush()将pkt-line消息写入“ proc-receive”钩子,并且当管道断开时,这些功能会立即消失。

对这些函数使用“温和”的形式将获得更多可预测的输出。

添加更多“ --die-*”选项以测试帮助程序,以测试“ receive-pack”和“ proc-receive”挂钩之间协议的不同阶段。