Загрузка данных
Задание 3
Не просто копируйте команды, а старайтесь понять, что происходит на каждом этапе. Читайте вывод git status после каждого действия.
1. Настройка (сделать один раз):
o Установите Git.
o Настройте глобально имя пользователя и email:
bash
git config --global user.name "Ваше Имя"
git config --global user.email "ваша@почта.com"
2. Создание локального репозитория:
o Создайте папку для проекта, например, my-git-project.
o Перейдите в неё в терминале.
o Инициализируйте Git-репозиторий: git init.
3. Первый коммит:
o Создайте файл index.html с простой HTML-разметкой (например, <h1>Мой проект</h1>).
o Проверьте статус: git status.
o Добавьте файл в индекс (staging area): git add index.html.
o Сделайте первый коммит: git commit -m "Initial commit: add main HTML structure".
o Просмотрите историю: git log.
Работа с изменениями и отмена действий
4. Внесение и отслеживание изменений:
o Измените index.html (добавьте абзац <p>...</p>).
o Создайте новый файл style.css с базовыми стилями.
o Добавьте только index.html в индекс (git add index.html). Проверьте git status.
o Теперь добавьте и style.css. Сделайте коммит: git commit -m "Add paragraph and CSS file".
5. Упражнение на отмену (очень важно!):
o Сценарий А (отмена в рабочей директории): Случайно удалите строку в index.html. Отмените изменение в этом конкретном файле, вернув его к состоянию последнего коммита: git checkout -- index.html.
o Сценарий Б (извлечение файла из коммита): Удалите файл style.css полностью (rm style.css). Восстановите его из последнего коммита: git checkout HEAD -- style.css.
o Сценарий В (отмена индексации): Измените оба файла, добавьте оба в индекс (git add .). Затем решите, что style.css пока рано коммитить. Вытащите его из индекса, оставив изменения: git reset HEAD style.css. Проверьте git status.
Ветвление и слияние (Branching & Merging)
6. Создание и работа в изолированной ветке:
o Создайте ветку для новой функции: git branch feature/contact-form.
o Переключитесь на неё: git checkout feature/contact-form (или git switch feature/contact-form).
o В этой ветке создайте файл contact.html с формой. Измените index.html, добавив ссылку на контакты. Сделайте коммит.
7. Слияние ветки в main:
o Вернитесь в основную ветку: git checkout main.
o Убедитесь, что файла contact.html тут нет. Это важно!
o Выполните слияние: git merge feature/contact-form.
o Просмотрите историю с графом: git log --oneline --graph.
8. Разрешение конфликта слияния (искусственно создадим, очень важно!):
o В ветке main измените первую строку в index.html (например, <h1>Главная страница</h1>). Сделайте коммит.
o Переключитесь обратно в feature/contact-form (или создайте новую feature/header). Измените ту же самую строку по-другому (например, <h1>Добро пожаловать!</h1>). Сделайте коммит.
o Попробуйте слить ветку в main: git merge feature/contact-form.
o Git сообщит о CONFLICT. Откройте index.html, увидите специальные разметки (<<<<<<<, =======, >>>>>>>).
o Вручную отредактируйте файл, оставив нужную вам версию заголовка (или совместив их). Удалите разметку конфликта.
o Добавьте исправленный файл: git add index.html.
o Завершите слияние коммитом: git commit.
9. Просмотр различий:
o Используйте git diff для сравнения рабочей директории и индекса.
o Используйте git diff HEAD для сравнения рабочей директории и последнего коммита.
o Используйте git diff HEAD~1 HEAD для сравнения двух последних коммитов.
Критерии успешного выполнения:
• Локальный репозиторий с чистой историей (проверьте git log --oneline --graph --all).
• В истории есть как минимум:
o Несколько осмысленных коммитов.
o Ветка feature/*, слитая в main.
o Файл README.md.
• Вы самостоятельно разрешили merge conflict.