Ошибка "конфликты предотвращают проверку" с помощью Git в Visual Studio


Я использую Git в Visual Studio. Когда я пытаюсь синхронизировать, появляется следующее сообщение:

ошибка. Подробное сообщение: ошибка была вызвана libgit2. Cetegory = checkout (MergeConflict). 1 конфликты предотвращают проверку

Я понятия не имею о том, что такое конфликты и как их исправить. Может кто-нибудь помочь мне преодолеть эту проблему?

7 63

7 ответов:

Я решил ту же проблему с помощью командной строки Git в Visual Studio, потому что это дает вам больше возможностей:

http://msdn.microsoft.com/en-us/library/vstudio/dd286572.aspx

вы также можете установить это расширение, чтобы облегчить работу с ним (это дает возможность не вводить пароль каждый раз):

http://gitcredentialstore.codeplex.com/

тогда я использовал это команды:

git pull // I got an error on this step
git stash
git pull

более подробная информация о командах здесь:

http://git-scm.com/docs/git-pull

http://git-scm.com/book/en/Git-Tools-Stashing

http://git-scm.com/docs/git-commit

и CharlesB сказал, что это связано с "конфликтом между вашими изменениями и изменениями из другой ветви".

У вас есть некоторые незафиксированные изменения. Зафиксируйте или отмените эти изменения, а затем Git "pull" будет работать.

Я испытал эту проблему во время запроса" pull " через Visual Studio.

произошло изменение в скрытом файле:.ntvs_analysis.dat

чтобы обнаружить этот скрытый файл и исправить проблему, я:

  1. показала скрытые файлы просто чтобы увидеть, были ли изменения в файлах, которые я не мог видеть.
  2. в каталоге проекта, используется Git GUI, чтобы отменить изменение в скрытый файл, который я нашел.

после этого мой запрос "вытянуть" был успешным.


Панель управления = > Параметры папки = > Вид = > Показать скрытые файлы и папки

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

Я закончил тем, что просто ударил свое локальное РЕПО в файловой системе и повторно клонировал удаленную ветвь. Вуаля!

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

наша среда требует, чтобы мы не полагались на NuGet auto package restore, и проблема, с которой я столкнулся, была вызвана:

  • некоторые члены используют только git command console для фиксации / pull / push.
  • Я полагаюсь на VS2013 git tools, чтобы сделать Commit /pull / push.
  • консоль команд Git помещает все содержимое в папку packages
  • Visual Studio tools игнорирует папку packages

таким образом, конфликт произошел из-за файлов в папка packages пытается быть добавлена через vs pull, но уже существует на жестком диске. На данный момент я просто удалил соответствующую папку/файлы пакетов и переделал pull, который работал.

надеюсь, что это помогает.

Если у вас есть некоторые изменения в local, то вы просто фиксируете свои изменения и не синхронизируете эту фиксацию

изменения = > введите сообщение фиксации = > фиксация и не синхронизируйте эту фиксацию,тогда вы можете правильно тянуть

Если у вас нет изменений в вашей ветке, то перейдите на Actions = > Open Comment Prompt = > затем введите эти строки

  1. git pull

  2. git stash

3.ГИТ тянуть

Это звучит как результат не добавления исполняемых файлов и других автоматически генерируемых выходных данных из Visual Studio в a .файла.gitignore Вы не хотите быть источником управления этими файлами. Подробнее об этом здесь.