这是不可能在服务器上的repo中创建somme子子文件夹?
如果我做:
git push origin dev/master
Run Code Online (Sandbox Code Playgroud)
一切工作找到
但如果我这样做
git push origin dev/sub/master
Run Code Online (Sandbox Code Playgroud)
我懂了:
error: 'refs/heads/dev/sub' exists; cannot create 'refs/heads/dev/sub/master'
Run Code Online (Sandbox Code Playgroud)
我用"git branch -r"检查并直接用ssh检查,没有创建dev/sub文件夹.
怎么了?
tor*_*rek 100
它不是一个存在的文件夹,它是一个分支.(好吧,可能有一个文件夹/目录涉及某处 - 或者可能没有,因为引用得到"打包"并停止作为目录中的文件存在.)
b存在分支,b/anything则不能创建命名分支. dev/b存在分支,dev/b/c则无法创建.这是一个内部限制.在这种特殊情况下,remote origin有一个名为的分支dev/sub(无论你是否拥有它,重要的是远程是否拥有它).为了创造上origin,一个分支命名dev/sub/master,必须先删除命名的分支dev/sub上origin:
git push origin :dev/sub
Run Code Online (Sandbox Code Playgroud)
(当然,删除这个分支可能会删除那里重要的东西,所以一定要知道你在做什么.一般来说,你可能想git fetch origin先把它们dev/sub当作你的origin/dev/sub.然后你可以创建一个名为dev/renamed-sub指向同一个提交的本地分支.,dev/renamed-sub在遥控器上创建,删除遥控器dev/sub,然后dev/sub/master在遥控器上创建.)
如果您可以登录远程(origin托管在其上的系统),则可以在那里进入存储库并简单地重命名本地dev/sub分支.(根据下面的评论,我怀疑那里也有一个破坏的自动部署脚本,可能应该修复只部署"可部署"分支,而不是被推送的所有内容.但我只是在这里猜测.)
mer*_*ius 43
我处于一种我甚至无法取得的状态,因为我的回购有关于我现在甚至没有检查过的不存在的远程分支的信息.我通过运行组合(感谢@torek)来解决它:
git branch -r 列出远程分支的本地副本git ls-remote 列出远程分支git fetch --prune origin更新远程分支的本地副本(这实际上没有帮助我)git remote prune origin删除有关已删除的远程分支的信息(这样做)小智 18
对我来说->
错误=
fatal: cannot lock ref 'refs/heads/release/wl/2.3': 'refs/heads/release/wl'
exists; cannot create 'refs/heads/release/wl/2.3'
Run Code Online (Sandbox Code Playgroud)
解决方案=
$~ git update-ref -d refs/heads/release/wl
$~ git checkout release/wl/2.3
Run Code Online (Sandbox Code Playgroud)
awr*_*can 10
在目前接受的答案没有帮助我,因为我没有在远程回购一个裁判删除-这纯粹是我的地方!所以,如果你处于这种情况,那么这是做什么的:
这是我面临的问题:
$ git fetch origin
error: cannot lock ref 'refs/remotes/origin/fix/sub-branch':
'refs/remotes/origin/fix' exists; cannot create
'refs/remotes/origin/fix/sub-branch'
From <repo URL>
! [new branch] fix/sub-branch -> origin/fix/sub-branch
(unable to update local ref)
Run Code Online (Sandbox Code Playgroud)
我尝试了接受的答案的建议,但得到了这个:
$ git push origin :fix
error: unable to delete 'fix': remote ref does not exist
error: failed to push some refs to <repo URL>
Run Code Online (Sandbox Code Playgroud)
因此,裁判甚至不存在origin- 它显然只是悬挂在我当地的仓库的某个地方.所以我跑了$ git remote show me,产生了:
Remote branches:
...
refs/remotes/origin/fix stale (use 'git remote prune' to remove)
...
Run Code Online (Sandbox Code Playgroud)
然后,解决方案明确:
$ git remote prune origin
Pruning origin
URL: <redacted>
* [pruned] origin/fix
Run Code Online (Sandbox Code Playgroud)
有了这个,问题就消失了:
$ git fetch origin
remote: Counting objects: 5, done.
remote: Total 5 (delta 2), reused 2 (delta 2), pack-reused 3
Unpacking objects: 100% (5/5), done.
From <repo URL>
* [new branch] fix/sub-branch -> origin/fix/sub-branch
Run Code Online (Sandbox Code Playgroud)
我知道这已经得到回答,但它对我不起作用。我不关心局部变化,因为它已经被推高了,但在拉回时遇到了问题。就我而言,我们在将“修补程序”作为分支到将父文件夹作为“修补程序”的文件夹系统之间进行了中间更改。
-- 修补程序 ----修补程序/1234_bug ----修补程序/3456_bug
所以我收到以下错误:
Fetching from origin Error: cannot lock ref 'refs/remotes/origin/hotfix/1234_bug': 'refs/remotes/origin/hotfix' exists; cannot create 'refs/remotes/origin/hotfix'
Run Code Online (Sandbox Code Playgroud)
在搜索类似的错误后,我终于在此处的讨论线程中找到了解决方案。
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
尝试这个命令来修复它:
git gc
Run Code Online (Sandbox Code Playgroud)
在当前存储库中运行许多内务管理任务并删除无法访问的对象(通过调用git prune和git fsck --unreachable)。
阅读更多内容:(git help gc文档)和git help prune(文档)。
git-gc - 清理不必要的文件并优化本地存储库
git-prune - 从对象数据库中删除所有无法访问的对象