Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Разрешение конфликтов




При прописывании изменений в удалённый репозиторий возможно возникновение различных конфликтов. Рассмотрим наиболее часто возникающий конфликт, когда изменяются одинаковые части исходного кода.

В этом случае, при попытке прописать изменения в удалённый репозиторий выдаётся ошибка о том, что объединение невозможно, потому что кто-то уже закоммитил изменения и текущая версия локального репозитория не соответствует удалённой.

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» и прописать изменения в удалённый репозиторий.


Поделиться:

Дата добавления: 2015-09-15; просмотров: 118; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты