Ответ 1
Как ни странно, я просто пошел в командную строку , и он сработал.
- Git статус
- Git pull
- Git нажмите
все работает нормально.
Если бы я сделал то же самое в Visual Studio, это не сработало. Идите фигуру.
Несколько друзей и я работаем над проектом через github. Мы все разделяем одну ветвь, которая может быть или не быть хорошей идеей.
Я редактировал часть кода и исправлял изменения. Я пошел на pusj совершить github (я работаю с Vis. Studio 2013 и встроенным инструментом Git), но я получил эту ошибку:
"Появились новые удаленные изменения. Вы должны вытащить их, прежде чем вы сможете нажать.
Итак, я попытался извлечь удаленные изменения, и я получаю эту ошибку:
"Произошла ошибка Подробное сообщение: ошибка была вызвана libgit2. Category = 21 (MergeConflict). 9 незафиксированных изменений будут перезаписаны слиянием "
Я попытался сменить ветки так, что я мог бы нажать мои изменения, а затем объединить их с первой ветвью, но я получил эту ошибку:
"Невозможно переключиться на мастер, потому что есть незафиксированные изменения. Заблокируйте или отмените изменения до того, как вы переключите ветки. Подробнее см. в окне вывода."
Я понятия не имею, что делать, кроме как, возможно, отправить мои изменения одному из моих друзей и заставить их изменить мои изменения. Но я не знаю, что произойдет с моими локальными коммитами.
Проблема решена. Убедившись, что все коммиты были синхронизированы, я открыл Git bash и вытащил удаленные коммиты. После нескольких попыток я вернулся в Visual Studio и обнаружил, что он зарегистрировал слияние. Я разрешил все конфликтующие файлы и смог продвинуть проект.
Спасибо всем, кто ответил!
Как ни странно, я просто пошел в командную строку , и он сработал.
все работает нормально.
Если бы я сделал то же самое в Visual Studio, это не сработало. Идите фигуру.
При использовании поставщика 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, чтобы обновить удаленный репозиторий.
В настоящий момент вы пытаетесь по существу сделать git merge
с неуправляемыми изменениями в своей ветке (pull - просто выборка + слияние). Git справедливо жалуется, что такая операция будет перезаписывать неуправляемые изменения в ветке.
Для продолжения операции потянуть вам нужно удалить эти неустановленные изменения из рабочего каталога. Есть несколько способов сделать это
Если вы новичок в Git, я бы, наверное, начинал с опции # 1.
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/и других файлах, которые вы не хотите отслеживать.
Затем нажмите на локальный и синхронизируйте свой код с репозиторием сервера.
Надеюсь, это поможет.
То же самое происходило со мной, я совершил все свои изменения и получил ту же ошибку, когда пытаюсь переключить ветки.
Я понял, что есть один файл, который я выбрал для "игнорирования", который я оставил в разделе "Исключенные изменения". По-видимому, VS2013 плохо справляется с этими исключениями.
Итак, после многих попыток я придумал простое решение:
У меня не было никаких изменений, но у меня была такая же ошибка при разработке слияния. Я пробовал:
И затем попробовал слияние для разработки снова, и ошибка больше не появляется. Однако мне пришлось решать некоторые конфликты. Я могу представить, что только вторая команда действительно актуальна, но я не знаю, что здесь происходит, поэтому я скорее документирую все этапы.
Мне пришлось загрузить инструменты командной строки, и это позволило мне проверить там ведущую ветку (которая также проверила ее в VS). Затем я сделал растягивание git, которое затем вызвало дополнительные ошибки из-за конфликтов с объединением удаленных и локальных ветвей. Исправлены конфликты, исправлены и затем синхронизированы, что решило эту проблему.
Выполнение этого из командной строки "git merge {имя ветки}" привело к более конкретной ошибке. "Объединить конфликт в .gitignore"
У меня была аналогичная проблема для нового проекта MVC, который я создал, и для любой новой ветки при слиянии она дает ошибку, у которой у меня нет проекта, который я создал месяц назад. Я добавил файл .gitattribute из хорошего рабочего проекта в проект с указанной выше ошибкой и исправил проблему. Теперь я могу объединиться без каких-либо проблем.
Я просто добавил .gitignore к хозяину и зафиксировал его.
Мне пришлось запустить надстройку git в VS 2013 без загрузки решения.
Моя проблема заключалась в том, что VS запускал application.vshost.exe при загрузке проекта приложения Windows и, следовательно, блокировал надстройку git для выполнения некоторых операций.
Уже используется .gitignore из шаблона VS studio, но это что-то другое.
У меня была эта проблема в VS 2015, и единственное, что исправлено, это перезапуск VS. Ни одна из других ситуаций, упомянутых выше, не применима.