这不可能在服务器上的 repo 中创建 somme 子文件夹吗?
如果我做:
git push origin dev/master
一切工作找到
但如果我这样做
git push origin dev/sub/master
我懂了:
error: 'refs/heads/dev/sub' exists; cannot create 'refs/heads/dev/sub/master'
我检查git branch -r并直接使用 ssh,还没有创建 dev/sub 文件夹。
git branch -r
怎么了?
它不是一个存在的文件夹,而是一个分支。(嗯,可能在某个地方涉及到一个文件夹/目录 - 或者可能没有,因为引用被“打包”并停止作为目录中的文件存在。)
b
b/anything
dev/b
dev/b/c
这是 git 内部限制。在这种特殊情况下,远程origin有一个名为的分支dev/sub(不管你有没有,重要的是远程是否有它)。为了在 on 上创建origin一个名为 的分支dev/sub/master,您必须首先删除名为dev/subon的分支origin:
origin
dev/sub
dev/sub/master
git push origin :dev/sub
(当然,删除这个分支可能会删除一些重要的东西,所以请确保您知道自己在做什么。通常,您可能希望git fetch origin首先将它们捕获dev/sub为您的origin/dev/sub. 然后您可以创建一个名为dev/renamed-sub指向同一个提交的本地分支,dev/renamed-sub在遥控器上创建,删除遥控器dev/sub,然后dev/sub/master在遥控器上创建。)
git fetch origin
origin/dev/sub
dev/renamed-sub
如果您可以在远程(origin托管的系统)上登录,您可以进入那里的存储库并简单地重命名本地dev/sub分支。(根据下面的评论,我怀疑那里也有一个损坏的自动部署脚本,可能应该修复它以仅部署“可部署”分支,而不是所有被推送的内容。但我只是在这里猜测。)