0Pricing
DevOps Bootcamp · Урок

Ручное разрешение конфликтов слияния

Научитесь вручную выявлять и разрешать конфликты слияния, возникающие при объединении разошедшихся веток.

«Ручное разрешение конфликтов слияния» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Понимание конфликтов слияния

Добро пожаловать в мир конфликтов слияния! Не беспокойтесь: это нормальная часть совместной работы с Git. Конфликт слияния возникает, когда Git не может автоматически определить, как объединить изменения из двух разных веток.

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

Почему возникают конфликты

Git исключительно хорошо автоматически объединяет большинство изменений. Однако при неоднозначности ему требуется помощь человека. Вот распространённые сценарии:

  • Одна строка, разные изменения: два человека по-разному редактируют одну и ту же строку кода.
  • Один удаляет, другой изменяет: одна ветка удаляет файл, а другая изменяет его.
  • Переименование и изменение: в одной ветке файл переименован, а в другой изменён.

Обнаружение конфликтов в Git

Когда возникает конфликт слияния, Git не завершает слияние автоматически. Вместо этого он приостанавливает процесс и сообщает, в каких файлах есть конфликты. Вы увидите сообщение примерно такого вида:

Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

Использование `git status` при конфликтах

После сбоя автоматического слияния Ваш репозиторий перейдёт в состояние «слияние». С помощью git status можно определить, в каких файлах есть конфликты. Эти файлы будут перечислены как «пути без слияния».

git status

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

Git вставляет специальные маркеры непосредственно в конфликтующие файлы, чтобы показать место проблемы. Эти маркеры помогают определить разные версии кода:

  • <<<<<<< HEAD: отмечает начало изменений текущей ветки.
  • =======: разделяет изменения из двух веток.
  • >>>>>>> branch-name: отмечает конец изменений входящей ветки.

Содержимое конфликтующего файла

Рассмотрим пример. Представьте, что у Вас есть файл hello.txt. В ветке main он изменён на «Hello from main», а в ветке feature та же строка изменена на «Greetings from feature». При слиянии feature с main файл будет выглядеть так:

<<<<<<< HEAD
Hello from main
=======
Greetings from feature
>>>>>>> feature

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

Ваша задача — открыть конфликтующий файл (например, hello.txt) в текстовом редакторе. Затем вручную измените файл, удалите маркеры конфликта и выберите нужное содержимое. Можно объединить части, выбрать одну из версий или полностью написать новый вариант.

В нашем примере с hello.txt, если нужны оба сообщения, файл можно изменить так:

Hello from main and Greetings from feature!

Добавление разрешённых изменений в индекс

После ручного редактирования файла и удаления всех маркеров конфликта необходимо сообщить Git, что конфликт разрешён. Для этого добавьте файл в индекс с помощью git add.

Повторите эту операцию для каждого файла, указанного командой git status как «путь без слияния».

git add hello.txt

Завершение коммита слияния

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

git commit -m "Merged feature branch, resolved conflict in hello.txt"

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

Вы успешно разрешили конфликт слияния. Теперь проверим, насколько хорошо Вы поняли следующий важный шаг после ручного редактирования конфликтующего файла.

Повторение: разрешение конфликтов вручную

Вы научились разрешать конфликты слияния вручную! Это фундаментальный навык для любого разработчика.

  • Конфликты возникают, когда Git не может автоматически объединить изменения.
  • git status показывает неслитые файлы.
  • Маркеры конфликта (<<<<<<<, =======, >>>>>>>) обозначают расходящиеся фрагменты кода.
  • Вручную отредактируйте файлы, удалите маркеры и выберите итоговое содержимое.
  • Добавьте разрешённые файлы в индекс с помощью git add.
  • Завершите слияние с помощью git commit.

Практика ведёт к совершенству! Сначала конфликты могут показаться пугающими, но, следуя этим шагам, Вы научитесь мастерски их разрешать.

Часто задаваемые вопросы

Урок «Ручное разрешение конфликтов слияния» бесплатный?

Да — полный текст урока «Ручное разрешение конфликтов слияния» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Ручное разрешение конфликтов слияния»?

Научитесь вручную выявлять и разрешать конфликты слияния, возникающие при объединении разошедшихся веток. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Ручное разрешение конфликтов слияния»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Ручное разрешение конфликтов слияния
  2. Интерактивное перебазирование истории
  3. Выборочное применение фиксаций
  4. Повторное использование разрешений конфликтов с Git Rerere
← Назад к DevOps Bootcamp