Что такое конфликты в Git?
Конфликт в Git возникает, когда две или более ветки изменяют одну и ту же строку в одном и том же файле или когда одна
ветка удаляет файл, который была изменён другой. Это часто происходит во время слияния веток (merge) или при попытке
применить изменения с помощью команды rebase
.
Пример конфликта
Рассмотрим простой сценарий:
Шаг 1: Создаём репозиторий и файл
git init my-repo
cd my-repo
echo "Hello World" > file.txt
git add file.txt
git commit -m "Первый коммит с файлом file.txt"
Шаг 2: Создаём новую ветку и вносим изменения
git checkout -b feature-1
echo "Hello from feature-1" >> file.txt
git commit -am "Добавлено сообщение из feature-1"
Шаг 3: Возвращаемся на master и вносим изменения
git checkout master
echo "Hello from master" >> file.txt
git commit -am "Добавлено сообщение из master"
Шаг 4: Слияние веток
Теперь, когда обе ветки внесли свои изменения в file.txt
, давайте попробуем слить ветку feature-1
в master
:
git merge feature-1
На этом этапе Git обнаружит конфликт, так как обе ветки изменили один и тот же файл. Вы увидите сообщение о конфликте в терминале:
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
Как разрешить конфликт
file.txt
теперь будет содержать маркеры конфликтов:Hello World
<<<<<<< HEAD
Hello from master
=======
Hello from feature-1
>>>>>>> feature-1
Hello World
Hello from master
Hello from feature-1
git add file.txt
git commit -m "Разрешён конфликт между master и feature-1"
Заключение
Конфликты в Git – это нормальная часть работы с системами контроля версий, особенно когда несколько разработчиков
работают над одним проектом. Важно быть внимательным при разрешении конфликтов и проверять, что все необходимые
изменения были учтены. Оператор git status
будет полезен для отслеживания текущего состояния вашего репозитория и
поможет вам понять, какие файлы содержат конфликты.