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

Ошибка публикации главной ветки в GitHub от VS.NET

Я использую VS.NET 2013 с интегрированными инструментами Git и пытаюсь опубликовать ветвь master в существующем репозитории, который я установил на GitHub. Я использую инструменты VS.NET исключительно в среде IDE и хотел бы, чтобы любые ответы продолжались с использованием этих инструментов, если это возможно, в отличие от командной строки.

Все мои изменения были зафиксированы локально, и мне просто нужно опубликовать ветвь в GitHub. Однако, когда я пытаюсь опубликовать локальную ветвь master, я получаю следующую ошибку:

Вы не можете публиковать мастер локального ветки в исходном удаленном репозитории потому что ветвь с тем же именем уже существует. Ты мог бы хотите переименовать локальную ветку и повторите попытку.

Я знаю, что здесь есть длинная статья , но я пытаюсь исправить это из VS.NET или онлайн в GutHub, если это возможно. В лучшем случае я хочу лучше понять проблему.

Я почти уверен, что эта проблема была вызвана тем, что я выбрал опцию Initialize this repository with a README selection на GitHub вместо создания пустой репозитории, на которую могут быть перенесены мои локальные изменения. Я думаю, что GutHub уже использовал одно и то же имя ветки и вызывает конфликт.

Я предполагаю, что могу удалить репозиторий на GitHub и начать с нуля, но надеялся, что это будет сглажено либо из VS.NET, либо из GitHub. Кто-нибудь знает, как я могу это сделать, чтобы моя ветка master могла быть успешно опубликована?

4b9b3361

Ответ 1

Поскольку я только что создал репозиторий и не было пользователей, решение заключалось в том, чтобы удалить репозиторий из Github (в меню "Настройки" ) и создать его снова (после удаления я мог бы использовать одно и то же имя). Хитрость заключается в не инициализации репозитория от GitHub - разрешить VS.NET делать это при 1-й синхронизации. Теперь он отлично работает с VS.NET.

Если бы я не удалил репозиторий, мне пришлось бы использовать некоторые внешние инструменты, чтобы либо переименовать локальный репозиторий, либо использовать синхронизацию с другого инструмента (например, TortoiseGit), который позволяет принудительно перезаписывать ветвь при синхронизации. Похоже, что в VS.NET не было ничего, что позволило бы это произойти.

Ответ 2

Для этого есть исправление:

Перейдите в командную строку и перейдите в каталог решений. Оттуда вы сможете запускать команды git. Возможно, вам придется установить git, если у вас еще нет Run 'git pull origin master'. Это должно объединить репозиторий GitHub с вашим местным репо. Это все, что нам нужно сделать из командной строки. Теперь вернитесь к Visual Studio

Вы можете столкнуться с некоторыми конфликтами, если вам это нужно, вам придется разрешить их и совершить локально снова. Visual Studio сообщит вам, есть ли какие-либо конфликты. Как только конфликты будут устранены, нажмите ссылку "мастер" в верхней части панели. Он должен предоставить вам раскрывающийся список с элементом, называемым "управляющие ветки". Нажмите на нее. Вы должны увидеть ветку под названием "мастер" под заголовком "Неопубликованные ветки", Щелкните правой кнопкой мыши мастер и нажмите "Опубликовать филиал". Теперь вы можете снова щелкнуть ссылку "несинхронизированные изменения", и вы увидите, что кнопка "Синхронизация" больше не выделена серым цветом Нажмите "Синхронизировать", и все готово!

Источник и кредит: http://zanemayo.com/using_git_and_github_with_visual_studio.html

Ответ 3

VS 2013 инициализирует репозиторий GIT, когда ваш первый фиксатор синхронизируется. Итак, простое решение - удалить репозиторий GIT и воссоздать его без опции инициализации.

введите описание изображения здесь

Ответ 4

Я столкнулся с этой проблемой в Visual Studio 2015, и именно так я ее исправил.

  • Подключитесь к локальному хранилищу git
  • Открытая ветка
  • Щелкните правой кнопкой мыши на главной ветке
  • Выберите команду "Открыть команду"
  • Запустите git pull origin master (Эта команда будет вытаскивать изменения с пульта дистанционного управления, ведущую ветвь и объединять их с локальным выводом.)
  • Опубликуйте свой репозиторий.

Ответ 5

Я знаю, что это старый поток, но для меня это работало: Слияние ветки удаленного отслеживания 'refs/remotes/origin/master'

В VS, перейдите в Team Explorer > Branches; затем скажите VS, чтобы объединить удаленную ветвь с мастером.

Это, похоже, сработало для меня. Не нужно ничего удалять, нет необходимости использовать консоль... мы VS-разработчики, нам не нравятся консоли... и нет необходимости в загрузке сторонних разработчиков (даже если некоторые из них хороши, чтобы иметь и легко использовать.)

Ответ 6

Решение для меня было довольно простым:

Откройте Git Bash в исходном каталоге.

выполнить:

git push origin -f

Это решило проблему.

По какой-то причине мой VS2013 фактически не создает репозиторий Git при выборе флажка создания репозитория, поэтому мне нужно создать репозиторий вручную.

Эта временно раздражающая проблема решается

git init
git remote add origin https://(bitbucket username)@bitbucket.org/(bitbucket project name)/(bitbucket repository name).git
git add .
git push origin -f

Я знаю, что это противоречит основной методологии, требующей использовать интерфейс Visual Studio, но есть проблема с VS2013, и это обходной путь для меня.

Ответ 7

Есть хорошее решение:

Нажмите кнопку "Домой" в команде "Исследовать",

enter image description here

Затем нажмите на ветки ниже будет показано

enter image description here

Создайте новую ветвь с именем, совпадающим с вашим локальным именем проекта/решения. Удалите основную ветвь. После этого нажмите кнопку "Домой", затем нажмите "Синхронизировать" и затем нажмите. после этого перейдите на страницу Bitbucket или Git и выберите вновь созданную ветку, ваш локальный код уже будет помещен в GIT.