Разрешение конфликтов слияния в Visual Studio
При слиянии одной ветви в другую изменения файлов из фиксаций в одной ветви могут конфликтовать с изменениями в другой. Git пытается устранить эти изменения с помощью журнала в репозитории, чтобы определить, как должны выглядеть объединенные файлы. Если не ясно, как объединить изменения, Git останавливает слияние и сообщает, какие файлы конфликтуют.
Предотвращение конфликтов при слиянии
Git хорошо справляется с автоматическим объединением изменений файлов в большинстве случаев при условии, что содержимое файла не изменяется резко между фиксациями. Если ваша ветвь сильно отстает от главной ветви, рассмотрите возможность перебазирования ветвей перед открытием pull request. Перебазированные ветви будут объединяться в основную ветвь без конфликтов.
Устранение конфликтов слиянием
Если вы работаете с другими пользователями в той же ветке, то при отправке изменений могут возникнуть конфликты слияния.
Visual Studio обнаруживает, если локальная ветка, над которой вы работали, отстает от соответствующей удаленной ветки, и предлагает вам варианты для выбора.
Заметка
Если удаленный репозиторий поддерживает принудительной отправки, его можно включить с помощью Git>параметры.
В этом примере выберите Pull, а затем Push, чтобы включить изменения, внесенные в удаленный репозиторий. Если при извлечении изменений или при попытке слияния двух ветвей возникают конфликты слияния, Visual Studio уведомляет вас об этом в окне Git Changes, в окне Git Repository и на всех файлах, содержащих конфликты.
В окне изменений Git отображается список файлов с конфликтами в unmerged Changes. Чтобы начать разрешение конфликтов, дважды щелкните файл. Или если у вас есть файл с конфликтами, открытый в редакторе, можно выбрать Открыть Редактор Слияния.
В редакторе слияния начните разрешать конфликт с помощью любого из следующих методов (как показано на нумерованном снимке экрана):
Просмотрите конфликтующие строки и решите, оставить ли правую или левую сторону, пометив флажками.
-или-
Нажмите кнопку Принять входящие (или нажмите клавишу F10), чтобы принять все входящие изменения, или нажмите кнопку Принять текущую (или нажмите клавишу F11), чтобы сохранить текущую версию всех конфликтующих изменений. Вы можете сделать то же самое, выбрав один из флажков в верхней части бокового кадра.
-или-
Вручную измените код в окне результатов.
Когда вы разрешите конфликты слияния, выберите Принять слияние. Повторите этот процесс для всех конфликтующих файлов.
Используйте окно изменений Git , чтобы создать коммит слияния и устранить конфликт.
Заметка
Если вы хотите сохранить все изменения в файле, щелкните его правой кнопкой мыши в разделе Неслияные изменения и выберите СОХРАНИТЬ ТЕКУЩИЕ (ЛОКАЛЬНЫЕ), без открытия редактора слияния.
Совет
Дополнительные сведения о вариантах специальных возможностей, доступных для вас, см. в разделе сочетания клавиш Git советы и рекомендации по Visual Studio.
Настройка средства диффа
Если вы настроили ваш .gitconfig
файл на использование стороннего средства сравнения, например BeyondCompare или KDiff3, Visual Studio будет его учитывать. Каждый раз, когда Visual Studio обычно будет отображать дифф, отдельное окно открывается в выбранном инструменте. Пример см. в этом вопросе о переполнении стека.