Это не папка , а ветка . (Ну, может быть где-то задействована папка / каталог, а может и нет, поскольку ссылки «упаковываются» и перестают существовать как файлы в каталогах.)
- Если ветка
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ветку. (Основываясь на комментариях ниже, я подозреваю, что там также есть сломанный сценарий автоматического развертывания, который, вероятно, следует исправить, чтобы развертывать только «развертываемые» ветки, а не все, что отправляется. Но я просто предполагаю здесь.)