Подтвердить что ты не робот

Не удается нажать на удаленную ветку, не может быть разрешено для ветвления

Я перенес свои репозитории из 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

Первые работы, вторая вызывает ту же ошибку.

Я не могу понять, почему я получаю эту ошибку. Любые идеи?

4b9b3361

Ответ 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 попытайтесь создать каталог с тем же именем, но с разными буквами

но система не чувствительна к регистру.

Вот что вызвало эту проблему!