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

Visual Studio 2013 Github фиксирует тупик

Несколько друзей и я работаем над проектом через github. Мы все разделяем одну ветвь, которая может быть или не быть хорошей идеей.

Я редактировал часть кода и исправлял изменения. Я пошел на pusj совершить github (я работаю с Vis. Studio 2013 и встроенным инструментом Git), но я получил эту ошибку:

"Появились новые удаленные изменения. Вы должны вытащить их, прежде чем вы сможете нажать.

Итак, я попытался извлечь удаленные изменения, и я получаю эту ошибку:

"Произошла ошибка Подробное сообщение: ошибка была вызвана libgit2. Category = 21 (MergeConflict). 9 незафиксированных изменений будут перезаписаны слиянием "

Я попытался сменить ветки так, что я мог бы нажать мои изменения, а затем объединить их с первой ветвью, но я получил эту ошибку:

"Невозможно переключиться на мастер, потому что есть незафиксированные изменения. Заблокируйте или отмените изменения до того, как вы переключите ветки. Подробнее см. в окне вывода."

Я понятия не имею, что делать, кроме как, возможно, отправить мои изменения одному из моих друзей и заставить их изменить мои изменения. Но я не знаю, что произойдет с моими локальными коммитами.

ИЗМЕНИТЬ

Проблема решена. Убедившись, что все коммиты были синхронизированы, я открыл Git bash и вытащил удаленные коммиты. После нескольких попыток я вернулся в Visual Studio и обнаружил, что он зарегистрировал слияние. Я разрешил все конфликтующие файлы и смог продвинуть проект.

Спасибо всем, кто ответил!

4b9b3361

Ответ 1

Как ни странно, я просто пошел в командную строку , и он сработал.

  • Git статус
  • Git pull
  • Git нажмите

все работает нормально.

Если бы я сделал то же самое в Visual Studio, это не сработало. Идите фигуру.

Ответ 2

При использовании поставщика Visual Studio Git (VS 2013, VS2015) эта ситуация может также возникать в сценариях, где выполняется локальная Commit, но при попытке вытащить с сервера и слияние, сообщение об ошибке:

"незафиксированные изменения будут перезаписаны с помощью merge"

все еще отображается, а действие Pull отменено.

Это может произойти из-за того, что локально существует Notrecked Files, которые не были частью локального Commit, но являются частью удаленного Pull; разрешение слияния не может справиться с этим сценарием.

Обычно это происходит, когда некоторые файлы, такие как выходы шаблонов T4, включаются в Commit на одной рабочей станции, но не на других.

Кроме того, это может произойти в Visual Studio 2015 при работе с проектами MVC6 (при написании), когда файлы в папке wwwroot были включены в Зафиксируйте одну рабочую станцию, но не на другой (одна из возможных причин этого заключается в том, что файлы .gitignore различаются на рабочих станциях, пытающихся работать с одним и тем же репозиторием сервера).

Чтобы решить:

a) Просмотрите диалог Team Explorer > Изменения.

b) Убедитесь, что любые неиспользуемые файлы, которые на самом деле находятся в филиале сервера, должны быть включены в ваши Commits; для этого щелкните правой кнопкой мыши и выберите "Добавить". Кроме того, если вы намерены перезаписать их, вы можете выбрать "Удалить". Соблюдайте осторожность.

c) Выполните Commit, а затем Pull и выполните любое разрешение конфликта слияния, которое требуется.

d) Выполните Push, чтобы обновить удаленный репозиторий.

Ответ 3

В настоящий момент вы пытаетесь по существу сделать git merge с неуправляемыми изменениями в своей ветке (pull - просто выборка + слияние). Git справедливо жалуется, что такая операция будет перезаписывать неуправляемые изменения в ветке.

Для продолжения операции потянуть вам нужно удалить эти неустановленные изменения из рабочего каталога. Есть несколько способов сделать это

  • передать их в локальный репозиторий
  • запустите их, запустите операцию вытягивания, а затем расстегните их поверх вытягивания.
  • commit, fetch, rebase и затем слияние

Если вы новичок в Git, я бы, наверное, начинал с опции # 1.

Ответ 4

Visual Studio 2013, кажется, не имеет зрелости в качестве пользовательского интерфейса GIT. Я столкнулся с подобной проблемой даже после того, как сделал все свои изменения локально. Для ошибок, возникающих из Push и Pull в Visual Studio 2013, я бы рекомендовал использовать GIT Bash для выполнения команды GIT pull. Команда команды командной строки гораздо более мощная, чем VS UI, и преодолеет некоторые проблемы.

В ответ на Уолтера Шульца вы получаете ошибку, потому что, похоже, вы пытаетесь сохранить двоичные и сборочные файлы (dll и exe) в управлении версиями. Двоичные файлы не редактируются и не объединяются, поэтому их нельзя включать в управление версиями.

Чтобы исключить эти файлы из репозитория GIT, вы можете создать файл .gitignore и включить следующие элементы:

--- begin .gitignore file ----------------
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates
*.cache

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
Dev/
bin/
--- end gitignore file ----------------

После создания файла .gitignore зайдите в локальный репозиторий и удалите все файлы в папке/Bin/и других файлах, которые вы не хотите отслеживать.
Затем нажмите на локальный и синхронизируйте свой код с репозиторием сервера.
Надеюсь, это поможет.

Ответ 5

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

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

Итак, после многих попыток я придумал простое решение:

  • Я переместил файл, чтобы игнорировать его из "Исключенных изменений" на "Включенные изменения";
  • Я сделал локальную фиксацию;
  • Переключить ветвь без проблем;

Ответ 6

У меня не было никаких изменений, но у меня была такая же ошибка при разработке слияния. Я пробовал:

  • git, а затем
  • git pull

И затем попробовал слияние для разработки снова, и ошибка больше не появляется. Однако мне пришлось решать некоторые конфликты. Я могу представить, что только вторая команда действительно актуальна, но я не знаю, что здесь происходит, поэтому я скорее документирую все этапы.

Ответ 7

Мне пришлось загрузить инструменты командной строки, и это позволило мне проверить там ведущую ветку (которая также проверила ее в VS). Затем я сделал растягивание git, которое затем вызвало дополнительные ошибки из-за конфликтов с объединением удаленных и локальных ветвей. Исправлены конфликты, исправлены и затем синхронизированы, что решило эту проблему.

http://blogs.msdn.com/b/visualstudioalm/archive/2013/03/08/use-the-git-command-prompt-to-supplement-visual-studio.aspx

Ответ 8

Выполнение этого из командной строки "git merge {имя ветки}" привело к более конкретной ошибке. "Объединить конфликт в .gitignore"

Ответ 9

У меня была аналогичная проблема для нового проекта MVC, который я создал, и для любой новой ветки при слиянии она дает ошибку, у которой у меня нет проекта, который я создал месяц назад. Я добавил файл .gitattribute из хорошего рабочего проекта в проект с указанной выше ошибкой и исправил проблему. Теперь я могу объединиться без каких-либо проблем.

Я просто добавил .gitignore к хозяину и зафиксировал его.

Ответ 10

Мне пришлось запустить надстройку git в VS 2013 без загрузки решения.

Моя проблема заключалась в том, что VS запускал application.vshost.exe при загрузке проекта приложения Windows и, следовательно, блокировал надстройку git для выполнения некоторых операций.

Уже используется .gitignore из шаблона VS studio, но это что-то другое.

Ответ 11

У меня была эта проблема в VS 2015, и единственное, что исправлено, это перезапуск VS. Ни одна из других ситуаций, упомянутых выше, не применима.