Не удается нажать на удаленную ветку, не может быть разрешено для ветвления
Я перенес свои репозитории из Bitbucket или Github. Я не думаю, что это имеет значение, но это единственное отличие... Некоторое время у меня было настроено два пульта:
origin: bitbucket
github: github
Затем я удалил оба и направленное начало в github:
git remote remove origin
git remote remove github
git remote add origin https://github....
Тестовый толчок развитой ветки:
git push origin develop
Все в актуальном состоянии, хорошо, хорошо.
Создайте новую ветку для некоторой работы, как обычно:
git checkout -b Feature/Name
Обновите файл или два. Попытка нажать на удаленный:
git push origin Feature/Name
Это приводит к ошибке:
fatal: Функция/имя не может быть разрешено для ветвления
Поиск в Интернете по этой проблеме, найти информацию о том, как HEAD является правильной, другие о том, чтобы убедиться, что у меня есть верное имя ветки (хотя на данный момент ветка еще не существует на удаленном компьютере). Не удалось разрешить.
Запустить эту команду:
git push --all -u
Это привело мою ветвь Feature/Name
к github, но все равно увидит то же поведение, что и раньше:
git push origin develop
git push origin Feature/Name
Первые работы, вторая вызывает ту же ошибку.
Я не могу понять, почему я получаю эту ошибку. Любые идеи?
Ответы
Ответ 1
У меня тоже была эта проблема, и это сводило меня с ума. У меня было что-то вроде feature/name
, но git branch -a
показал мне feature/name
. Переименовывая ветку, удаляя и воссоздавая ее, ничего не работало. Что окончательно зафиксировано:
Перейдите в .git/refs/heads
Вы увидите папку FEATURE
. Переименуйте его в FEATURE
.
Ответ 2
Основываясь на моем собственном тестировании и комментарии OP, я думаю, что в какой-то момент они попали в оболочку имени ветки.
Во-первых, я считаю, что OP работает на нечувствительной к регистру операционной системе, такой как OS X или Windows. Затем они сделали что-то вроде этого...
$ git checkout -b SQLMigration/ReportFixes
Switched to a new branch 'SQLMigration/ReportFixes'
$ git push origin SqlMigration/ReportFixes
fatal: SqlMigration/ReportFixes cannot be resolved to branch.
Обратите внимание на разницу в корпусе. Также обратите внимание, что ошибка сильно отличается от того, если вы просто опечатаете имя.
$ git push origin SQLMigration/ReportFixme
error: src refspec SQLMigration/ReportFixme does not match any.
error: failed to push some refs to '[email protected]:schwern/testing123.git'
Поскольку Github использует файловую систему для хранения имен веток, она пытается открыть .git/refs/heads/SqlMigration/ReportFixes
. Поскольку файловая система нечувствительна к регистру, она успешно открывает .git/refs/heads/SqlMigration/ReportFixes
, но запутывается, когда пытается сопоставить имена ветвей с ошибками, и они не совпадают.
Как они попали в состояние, в котором локальная ветвь SQLMigration/ReportFixes
, а удаленная ветвь SQLMigration/ReportFixes
Я не уверен. Я не считаю, что Гитуб испортил имя удаленной ветки. Проще всего объяснить, что кто-то другой с push-доступом изменил имя удаленной ветки. В противном случае, в какой-то момент они сделали то, что удалось создать пульт с опечаткой. Если они проведут проверку своей истории оболочки, возможно, с помощью history | grep -i sqlmigration/reportfixes
они могут найти команду, в которой они обманули корпус.
Ответ 3
Git позволит вам проверить текущую ветку с другим корпусом, и он не сможет найти ссылку на пульте дистанционного управления.
Только что нашел трудный путь.
Ответ 4
Аналогичная ситуация со мной произошла. Я создал ветку под названием "Feat/name".
Я попытался нажать ее, используя:
git push --set-upstream origin Feat/name
Я получил ту же фатальную ошибку, что и вы:
фатальный: имя feat/name не может быть разрешено для ветвления
Чтобы решить эту проблему, я создал новую ветку, так как у меня было очень мало файлов. Затем я перечислил свои ветки, чтобы удалить неправильный, и он отображается без крышки:
Раньше я использовал шапки, но никогда не был на первом рисунке. Похоже, что git не нравится...
Ответ 5
В моем случае у меня была папка с ветвями (или что бы она там ни называлась) с заглавными буквами, тогда я создаю новый с разным корпусом (строчный), но git фактически создает ветвь с капиталом.
Я создал ветку, как feature-ABC/branch1
раньше, и нажал ее. Затем я создаю ветвь feature-abc/branch2
(обратите внимание на ABC в нижнем регистре) и попробуйте нажать ее на удаленный с помощью git push --set-upstream origin feature-abc/branch2
и получить сообщение об ошибке "Невозможно разрешить ветвь". Итак, я git branch
и вижу, что он фактически создал feature-abc/branch2
вместо feature-ABC/branch1
для меня. Я снова выхожу с помощью git checkout feature-ABC/feature2
и нажимаю его, используя верхний регистр (feature-ABC/feature2
), чтобы решить проблему.
Ответ 6
Я столкнулся с той же проблемой, которая возникла из-за перехода на ветку с неправильным корпусом. git позвольте мне переключиться на ответвление с неправильным регистром, т.е. feature/Name
вместо feature/name
. Нашли более простое решение, чем указано выше:
- зафиксировать ваши изменения в 'feature/Name'
git checkout master (or develop)
git checkout feature/name
& lt; с правильным корпусом
git push
Ответ 7
Возможно, вы забыли запустить git fetch? он должен получать данные из удаленного репо! Попробуйте запустить git fetch remote/branch
Ответ 8
Возможно, вы создали похожую ветвь, но по-разному с учетом регистра, тогда вам нужно выполнить:
git branch -D <name-of-different-case-branch>
а затем попробуйте снова нажать
Ответ 9
Если вы находитесь в локальной ветке, можете переименовать ветку "Feature/Name" в "feature/Name"
git -m feature/Name
если у вас есть проблемы, чтобы сделать git push
оформить заказ в другой ветке (ex development) и вернуться в переименованную ветку
git checkout feature/Name
и попробуйте снова свой git push
Ответ 10
Слегка измененный ответ @Ty Le:
мне не потребовалось никаких изменений в файлах - у меня была ветка с именем "Feature/...", и, нажимая вверх по течению, я изменил название на "feature/..." (регистр первой буквы был изменен на нижний).
Ответ 11
У меня только что была эта проблема, и мои обычные ветки начинаются с pb-3.1-12345/namebranch
, но я случайно прописал первые 2 буквы PB-3.1/12345/namebranch
. После переименования ветки, чтобы использовать строчные буквы, я мог создать ветку.
Ответ 12
для меня я назвал ветку
Rel4.6/bug/Some-short-description
все, что мне нужно было сделать, это использовать
git push origin R elx.x/bug/Some-short-description
написать
git push origin r elx.x/bug/Some-short-description
как я использовал для создания веток, используя маленькую букву r в rel.
Итак, что вызвало эту проблему?
когда я перечислил содержание .git/refs/heads
, я нашел
drwxr-xr-x 4 eslam_khoga staff 128B Sep 22 20:22 relx.x
но нет Relx.x
!
и внутри bug
и внутри bug
имя моей ветки.
Итак, git попытайтесь создать каталог с тем же именем, но с разными буквами
но система не чувствительна к регистру.
Вот что вызвало эту проблему!