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=.
).