Продолжаем изучение Git. Сегодня у нас по плану устранение возможных конфликтов кода, когда один и тот же файл правится в разных ветках. Это не очень хорошо, но бывает всякое и нам нужно учиться разруливать такие конфликты.
Итак, возьмём репозиторий из предыдущей статьи.
Создадим новую ветку (я назвал её как design/form) и перейдём в неё.
Затем немного модифицируем нашу форму – добавим текстовое поле и переведём на англ.язык.
Работа над веткой design/form ещё не закончена и мы вдруг резко получаем вводную, что нужно исправить некоторый код в основной ветке! Мы переходим в основную ветку master и вносим необходимые коррективы в этот же файл! Заказчику понадобилось использование атрибутов id в каждом элементе формы!
Коммитим изменения, вздыхаем.
Чтож, такое бывает, особенно если хотим работать с формой через JavaScript до отправки её на сервер, удобнее получать поля по их id. Ну не суть, причины такого нововведения для нас не очень важны. Задачу мы выполнили, в основной ветке изменили код и отдали заказчику рабочий проект.
Продолжаем работу над нашим редизайном формы. Переходим в ветку design/form.
Допустим, что мы закончили. Пора сливать этот эту ветку с главной (master). Сперва мы хотим подтянуть все изменения из master в нашу design/form. Как в прошлом уроке мы делаем активной экспериментальную ветку design/form и делаем Merge с master:
Вот так незадача – конфликт. В обоих ветках изменён один и тот же файл и теперь нам придётся разруливать какие изменения вносить в файл.
Двойным кликом по конфликтному файлу мы открываем Conflict Solver, где будем решать сложившуюся ситуацию:
В среднем окне мы делаем результирующий код (можно использовать дополнительные кнопки, позволяющие перенести целиком фрагменты из левого/правого окон в окно результата). Когда мы получим то, что хотели – жмём кнопку Save в левом верхнем углу и соглашаемся на новый Stage.
Теперь можно сделать окончательный Commit исправленного кода! Мы разрешили конфликт и получили новую фичу в проект. А вообще подобных ситуаций легче избежать, чем их исправлять. Дальше мы сможем поговорить об этом! А пока – успехов вам в программировании!
Comments: