📝 Задания — Merge-конфликты, monorepo

К оглавлению урока

⚡ Задания

  1. Создать merge-конфликт и разрешить его
  2. Мигрировать разрозненные репозитории в monorepo
  3. Проверить работу укрупнённого репозитория в VS Code

Задание 1 — Создать и разрешить merge-конфликт

Попробуем мигрировать наши разрозненные репозитории в monorepo, тем самым проделав укрупнение.

Сначала отработаем создание и разрешение merge-конфликта:

  1. Создать новую директорию git-merge-test и инициализировать репозиторий
  2. Создать файл merge.txt, добавить и закоммитить
  3. Создать ветку new_branch_to_merge_later, изменить merge.txt, закоммитить
  4. Вернуться на main, тоже изменить merge.txt, закоммитить
  5. Выполнить git merge new_branch_to_merge_later — получить конфликт
  6. Использовать git status и git log --merge для диагностики
  7. Разрешить конфликт вручную (убрать маркеры)
  8. Выполнить git add + git merge --continue

Задание 2 — Укрупнение репозиториев (monorepo)

Попробуем мигрировать наши разрозненные репозитории в monorepo, тем самым проделав укрупнение.

Структуру для укрупнения вы выбираете сами. Варианты:

  • Один репозиторий для всего обучения (например, linux-git-course)
  • Репозиторий по темам: bash-scripts, git-workflow, linux-admin
  • Репозиторий по сессиям курса

Полезные инструменты для миграции:

find . -type d -name ".git" -exec rm -rf {} +
Перед выполнением: Эта команда удаляет директории .git рекурсивно. Сначала запустите без -exec, чтобы увидеть что будет удалено:
find . -type d -name ".git"

Задание 3 — Проверить укрупнённый репозиторий

Работая с укрупнённым репозиторием:

  1. Проработайте добавление новой директории с уроком или домашним заданием
  2. Обратите внимание на то, как работает git в директориях на разных уровнях
  3. Создайте новый проект при помощи Visual Studio Code и отправьте коммиты в новый укрупнённый репозиторий

Вопросы для закрепления

  1. Что такое merge-конфликт? Когда он возникает?
  2. Назовите виды merge-конфликтов
  3. Какие действия нужно выполнить для разрешения конфликта?
  4. Как избежать merge-конфликтов при работе в команде?
  5. Что такое monorepo? Назовите преимущества и недостатки
  6. Что произойдёт при выполнении find . -type d -name ".git" -exec rm -rf {} +?