这不可能在服务器上的存储库中创建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文件夹。

怎么了?

最佳答案

它不是一个存在的文件夹,而是一个分支。 (好吧,某个地方可能包含一个文件夹/目录,或者可能没有,因为引用被“打包”并不再以目录中的文件形式存在。)


如果存在分支b,则不能创建名为b/anything的分支。
同样,如果存在分支dev/b,则无法创建dev/b/c


这是一个git内部限制。在这种特殊情况下,远程origin具有一个名为dev/sub的分支(无论您是否拥有它,重要的是远程是否具有它)。为了在origin上创建名为dev/sub/master的分支,必须首先删除dev/sub上名为origin的分支:

git push origin :dev/sub


(当然,删除该分支可能会删除那里的重要内容,因此请确保您知道自己在做什么。通常,您可能需要先git fetch origin,将其dev/sub捕获为origin/dev/sub。然后,您可以本地分支dev/renamed-sub指向同一提交,在远程上创建dev/renamed-sub,删除远程dev/sub,然后在远程上创建dev/sub/master。)



如果您可以登录到远程服务器(托管origin的系统),则可以进入那里的存储库,只需重命名本地dev/sub分支即可。 (基于下面的评论,我怀疑那里还有一个损坏的自动部署脚本,应该将其修复为仅部署“可部署”分支,而不是部署所有推送的分支。但是我只是在这里猜测。)

关于git - git push:refs/heads/my/subbranch存在,无法创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59484052/

10-14 19:36
查看更多