Linux Labs

Автоматизация: Git и Ansible / Ступень 2 из 6

Конфиг из репозитория: pull и конфликты

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 7 · на машине · 6 мин

Конфликт: обе стороны поменяли одну строку

Если коллега и сервер поменяли одни и те же строки, git не выбирает за тебя — он кладёт в файл обе версии.

Слияние или git stash pop переносят правки построчно. Когда одну строку поменяли обе стороны, получается конфликт (в Вики): git пишет CONFLICT (content): Merge conflict in <файл>, а git status — both modified. В файле на месте строки появляются маркеры:

text
<<<<<<< Updated upstream
версия из репозитория
=======
твоя отложенная версия
>>>>>>> Stashed changes

Конфликт разбирают руками: оставляют нужное — одну версию или строку, собранную из обеих, — и удаляют три строки маркеров. С маркерами конфиг не пройдёт sudo nginx -t. Потом git add <файл> сообщает git, что конфликт разобран. После конфликта stash pop не удаляет отложенную правку — «The stash entry is kept in case you need it again»; когда она уже в файле, запись убирает git stash drop.

Упражнение · сделать

Обнови сервер, когда правки столкнулись

В /etc/nginx/conf.d снова локальная правка, а в репозитории — новый коммит коллеги, и оба дописали сайту по имени в строку server_name. Обнови рабочую копию до версии репозитория так, чтобы в конфиге остались оба новых имени, конфиг проходил nginx -t, а отложенных правок не осталось.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Обновить рабочую копию, не оставив отложенных правок ещё не выполнена
  • Собрать оба имени в конфиге без маркеров конфликта ещё не выполнена

Цели шага

0 из 2
  • Обновить рабочую копию, не оставив отложенных правок — ещё не выполнена
  • Собрать оба имени в конфиге без маркеров конфликта — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Обновить рабочую копию, не оставив отложенных правок — ещё не выполнена
  • Собрать оба имени в конфиге без маркеров конфликта — ещё не выполнена
Загрузка…