Visual Studio 2013 не предлагает слияния на Git pull

Я работаю с Visual Studio 2013 Update 4 и git (размещен на Visual Studio Online). У меня есть 2 локальных фиксации и 2 фиксации в удаленной ветке. Для фиксации нет локальных изменений:

Working directory clean

Когда я пытаюсь выполнить Pull (или Fetch) в Visual Studio, я получаю сообщение об ошибке:

Произошла ошибка. Подробное сообщение: 1 конфликт предотвращает проверку

An error occurred. Detailed message: 1 conflict prevents checkout

Да, есть конфликт, я должен слить. И в соответствии с на эту страницу Мне нужно предложить ссылку для разрешения конфликта. Но я не вижу этого в VS.

Я могу объединиться вне VS, но это не так. В то же время мой рабочий, работающий по той же самой настройке, может слить без проблем. Что не так с моим VS?

p.s. У меня установлен msysgit, который, возможно, запутался в конфигурациях. В соответствии с этим post мой глобальный .gitconfig выглядит следующим образом:

[user]
    mail = [email protected]
    name = trailmax
    email = [email protected]
[core]
    excludesfile = C:\\Users\\trailmax\\Documents\\gitignore_global.txt
    autocrlf = true
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor
[diff]
    tool = vsdiffmerge    
[difftool "vsdiffmerge"]
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
    keepbackup = false
    trustexistcode = true
[merge]
    tool = vsdiffmerge
[mergetool]
    prompt = true
[mergetool "vsdiffmerge"]
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
    keepbackup = false
    trustexistcode = true
[credential]

Ответ 1

В моем случае я не мог видеть параметр Resolve the conflicts, потому что у меня были локальные изменения еще не зафиксированы и Я пытался синхронизировать с удаленными изменениями. Как только я совершил локальные изменения , а затем снова попробовал синхронизацию, появилась ссылка Resolve the conflicts.

Итак, вот здесь: сначала выполните свои изменения, а затем попробуйте синхронизировать. Слияние начнется, и Visual Studio позволит вам пройти через каждый из конфликтов.

enter image description here

Ответ 2

Я столкнулся с той же проблемой, где "произошла ошибка. Подробное сообщение: 1 конфликт предотвращает проверку" отображается там, где нет возможности разрешить конфликт, как показано в ответе Лейнеля.

Причина была связана с отсутствием файла, который был тем же файлом, который нужно вытащить. Я просто удалил необработанный файл и повторил попытку.

Ответ 3

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

Ответ 4

У меня не было никаких "изменений" (без следа или нет), перечисленных в любой ветке, поэтому другие ответы не сработали для меня.

Я решил перейти в командную строку:

  • Нажмите Sync на обеих ветвях.
  • Перейдите к ветке, в которую вы хотите "слиться" (мастер в моем случае).
  • В Team Explorer в разделе Управление ветвями выполните Действие → Открыть командную строку.
  • В командной строке введите git merge BRANCH_NAME. (моя рабочая ветвь/слияние "из" )
  • Теперь доступна кнопка Разрешить конфликты.

Ответ 5

Если конфликты во время вытягивания связаны с символами конца строки:

git config --global core.autocrlf false

Это должно избегать любого автоматического преобразования eol.

Вы можете увидеть больше в Почему git считает, что каждая строка нетронутого файла изменилась", как обнаружить эту ситуацию в рабочем дереве (git diff --word-diff-regex=.).