Материал просмотрен 47 раз(а)

Продолжаем изучение Git. Сегодня у нас по плану устранение возможных конфликтов кода, когда один и тот же файл правится в разных ветках. Это не очень хорошо, но бывает всякое и нам нужно учиться разруливать такие конфликты.

Итак, возьмём репозиторий из предыдущей статьи.

Создадим новую ветку (я назвал её как design/form) и перейдём в неё.

Новая ветка

Новая ветка

Затем немного модифицируем нашу форму – добавим текстовое поле и переведём на англ.язык.

Перевод

Перевод

Работа над веткой design/form ещё не закончена и мы вдруг резко получаем вводную, что нужно исправить некоторый код в основной ветке! Мы переходим в основную ветку master и вносим необходимые коррективы в этот же файл! Заказчику понадобилось использование атрибутов id в каждом элементе формы!

id attrib

Добавляем атрибут id

Коммитим изменения, вздыхаем.

Чтож, такое бывает, особенно если хотим работать с формой через JavaScript до отправки её на сервер, удобнее получать поля по их id. Ну не суть, причины такого нововведения для нас не очень важны. Задачу мы выполнили, в основной ветке изменили код и отдали заказчику рабочий проект.

Продолжаем работу над нашим редизайном формы. Переходим в ветку design/form.

Допустим, что мы закончили. Пора сливать этот эту ветку с главной (master). Сперва мы хотим подтянуть все изменения из master в нашу design/form. Как в прошлом уроке мы делаем активной экспериментальную ветку design/form и делаем Merge с master:

Конфликт кода

Конфликт кода

Вот так незадача – конфликт. В обоих ветках изменён один и тот же файл и теперь нам придётся разруливать какие изменения вносить в файл.

Детали конфликта

Детали конфликта

Двойным кликом по конфликтному файлу мы открываем Conflict Solver, где будем решать сложившуюся ситуацию:

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

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

В среднем окне мы делаем результирующий код (можно использовать дополнительные кнопки, позволяющие перенести целиком фрагменты из левого/правого окон в окно результата). Когда мы получим то, что хотели – жмём кнопку Save в левом верхнем углу и соглашаемся на новый Stage.

Исправленный код

Исправленный код

Теперь можно сделать окончательный Commit исправленного кода! Мы разрешили конфликт и получили новую фичу в проект. А вообще подобных ситуаций легче избежать, чем их исправлять. Дальше мы сможем поговорить об этом! А пока – успехов вам в программировании!