Задание (дословно из LMS)
Linux: Домашнее задание 18
Проведите "укрупнение" своих репозиториев или репозитория. Миграция от множества разрозненных репозиториев к более крупному. Например, вместо дюжины Lesson1–Lesson10 создайте репозитории по темам курса или вовсе один репозиторий для всего обучения. В нем по отдельным директориям должны лежать занятия или домашние работы.
Пришлите ссылку на ваш новый репозиторий.
Проведите "укрупнение" своих репозиториев или репозитория. Миграция от множества разрозненных репозиториев к более крупному. Например, вместо дюжины Lesson1–Lesson10 создайте репозитории по темам курса или вовсе один репозиторий для всего обучения. В нем по отдельным директориям должны лежать занятия или домашние работы.
Пришлите ссылку на ваш новый репозиторий.
Пошаговое решение
Шаг 1: Выбрать структуру monorepo
Варианты структуры (на ваш выбор):
# Вариант А: один репозиторий для всего обучения
linux-git-course/
├── bash-lessons/ # уроки по bash
├── git-lessons/ # уроки по git
├── homework/ # домашние задания
└── README.md
# Вариант Б: по темам
bash-scripting/ # всё по bash
git-workflow/ # всё по git
linux-admin/ # администрирование Linux
Шаг 2: Создать новый репозиторий на GitHub
# На GitHub.com: New repository → название → Create
# Например: linux-git-monorepo
Шаг 3: Подготовить локальную структуру
mkdir ~/linux-git-monorepo
cd ~/linux-git-monorepo
git init
# Создать структуру директорий
mkdir -p bash-lessons git-lessons homework
# Скопировать файлы из каждого существующего репозитория
cp -r ~/Lesson1/* bash-lessons/lesson01/
cp -r ~/Lesson2/* bash-lessons/lesson02/
# ... и т.д. для каждого урока
Шаг 4: Удалить вложенные .git директории
⚠️ ОПАСНО: find . -type d -name ".git" -exec rm -rf {} +
Эта команда безвозвратно удалит историю коммитов всех вложенных репозиториев. Мы потеряем коммиты в индивидуальных репозиториях.
Сначала обязательно:
1. Проверить что будет удалено (без
2. Убедиться в правильности расположения (
Только после проверки — выполнять удаление.
Эта команда безвозвратно удалит историю коммитов всех вложенных репозиториев. Мы потеряем коммиты в индивидуальных репозиториях.
Сначала обязательно:
1. Проверить что будет удалено (без
-exec):find . -type d -name ".git" -not -path "./.git"2. Убедиться в правильности расположения (
pwd)Только после проверки — выполнять удаление.
# Проверить что будет удалено
find . -type d -name ".git" -not -path "./.git"
# Если список верный — удалить
find . -type d -name ".git" -exec rm -rf {} +
Шаг 5: Инициализировать новый репозиторий и запушить
# Добавить все файлы
git add .
git commit -m "Initial monorepo: migrate all lesson repositories"
# Подключить удалённый репозиторий
git remote add origin https://github.com/YOUR_USERNAME/linux-git-monorepo.git
git push -u origin main
Шаг 6: Проверить что репозиторий работает
# Клонировать в тестовую директорию и проверить
git clone https://github.com/YOUR_USERNAME/linux-git-monorepo.git test-clone
ls test-clone/
# Добавить новую директорию (Задание 3 из урока)
cd linux-git-monorepo
mkdir -p bash-lessons/new-homework
echo "# New homework" > bash-lessons/new-homework/README.md
git add bash-lessons/new-homework/
git commit -m "Add new homework directory"
git push
Что прислать
Прислать ссылку на новый репозиторий в форме: https://github.com/YOUR_USERNAME/REPO_NAME
Связь с теорией урока
- Теория: Monorepo — концепция и преимущества
- Ошибки: DANGER rm -rf .git — безопасное выполнение миграции
- Примеры: структура monorepo — варианты организации