希望将参考及其映射名称存储在中央存储库中。有没有办法实现这个...
不是来自通过 Git 协议的客户端。
此外,git symbolic-ref
它是一个“管道”命令(用于脚本而不是随意使用),因此,它要求您拼出完整的参考,例如:
git symbolic-ref refs/heads/foo refs/heads/master
为什么答案是“不”
让我们创建一个适当的符号引用,并尝试推送它:
$ git branch xyz master
$ git symbolic-ref refs/heads/foo refs/heads/xyz
$ git push origin foo
To [url]
* [new branch] foo -> xyz
现在,在服务器上origin
:
$ git branch
* master
xyz
我认为,这就是你观察到的导致你说的:
简单git push HEAD:refs/for/dev_branch
失败
这里的问题是push
协议实际上无法推送符号引用。该协议由一系列将引用名称设置为特定哈希 ID 的请求组成。符号引用是设置为不是哈希 ID 的字符串的引用。
这意味着从客户端,在服务器上创建新符号引用的唯一方法是直接在该服务器上运行 Git 命令,例如:
ssh server "cd path/to/git/repo; git symbolic-ref ..."
fetch协议确实允许检索符号引用(在现代 Git 中),但 push 协议不允许设置它们。