КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Разрешение конфликтов⇐ ПредыдущаяСтр 13 из 13 При прописывании изменений в удалённый репозиторий возможно возникновение различных конфликтов. Рассмотрим наиболее часто возникающий конфликт, когда изменяются одинаковые части исходного кода. В этом случае, при попытке прописать изменения в удалённый репозиторий выдаётся ошибка о том, что объединение невозможно, потому что кто-то уже закоммитил изменения и текущая версия локального репозитория не соответствует удалённой. E:\Temp\GraphicsExample>git push -u origin master To git@gitlab.rsreu.ru:vstolchnev/graphicsexample.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@gitlab.rsreu.ru:vstolchnev/graphicsexample.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. После попытки объединить изменения удалённого репозитория в локальным может возникнуть конфликт. Например, конфликт возник в одном из изменённых файлов: E:\Temp\GraphicsExample>git pull origin master remote: Counting objects: 9, done. remote: Compressing objects: 100% (5/5), done. remote: Total 5 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (5/5), done. From gitlab.rsreu.ru:vstolchnev/graphicsexample * branch master -> FETCH_HEAD db4f919..a1b7785 master -> origin/master Auto-merging GraphicsDevelopingExamples/GraphicsDevelopingExample/MainForm.cs CONFLICT (content): Merge conflict in GraphicsDevelopingExamples/GraphicsDevelopingExample/MainForm.cs Automatic merge failed; fix conflicts and then commit the result. В данном примере, присутствуют изменения одной и той же части кода в файле «MainForm.cs». Для разрешения данного конфликта необходимо воспользоваться утилитой «git mergetool». Рекомендуется настроить её для работы с утилитой сравнения файлов «kdiff3» (как настроить написано в приложении). Для запуска утилиты сравнения необходимо выполнить команду: «git mergetool --tool=kdiff3». Если всё настроено правильно, то в результате выполнения команды покажется следующий текст: E:\Temp\GraphicsExample>git mergetool --tool=kdiff3 Merging: GraphicsDevelopingExamples/GraphicsDevelopingExample/MainForm.cs
Normal merge conflict for 'GraphicsDevelopingExamples/GraphicsDevelopingExample/MainForm.cs': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (kdiff3): После нажатия на кнопку «Enter» вызовется утилита сравнения для разрешения конфликта: Рисунок 19 Утилита разрешения конфликтов Сверху показан исходный файл, изменения, которые произвёл другой пользователь и изменения, которые сохранились в локальном репозитории. Внизу показывается файл, в котором необходимо разрешить конфликт. Для конфликта вызывается контекстное меню, где можно выбрать какой из вариантов необходимо оставить. После внесения всех изменений файл сохраняется. Когда разрешены все конфликты, необходимо заново вызвать команду «git commit» и прописать изменения в удалённый репозиторий.
|