我在这里看到了文档:https://git-scm.com/docs/git-request-pull
但我不确定如何将它应用到我想要做的事情上。我推到了分支机构,名为" fix / fixNumberHere"我想合并到一个名为" mergeBranch"使用拉取请求 - 如何将其应用于:
git request-pull [-p] <start> <url> [<end>]
答案 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-pack
” (man)接受“ git push
”的请求,学会了将大多数参考更新外包给 new“ proc-receive
”钩子。
请参见commit d6edc18,commit 1702ae6,commit c6a6a01,commit 31e8595,commit b913075,commit 63518a5,commit 195d6ea,{{3} },commit 15d3af5,commit 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-pack
和proc-receive
挂钩之间的交换未仔细检查错误。
请参见man的commit 80ffeb9,commit f65003b,commit 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
”挂钩之间协议的不同阶段。