Домашнее задание к лекции «Командная работа в Git & GitHub»
Примерное время выполнения: 30 минут
Все задачи обязательны к выполнению. Пожалуйста, присылайте на проверку все задачи сразу. Пожалуйста, не прикладывайте никакие файлы, в том числе на Google Диск или Яндекс.Диск.
Любые вопросы по решению задач задавайте в чате учебной группы.
Цели задания:
Научиться работать над командным проектом через Git & GitHub, а именно:
- Настраивать игнорирование части файлов при публикации проекта
 - Откатывать изменения, внесенные другим участником
 - Отправлять изменения в проект и решать конфликты во время слияния
 
Данная практика поможет вам прокачать базовые навыки командной работы в Git & GitHub. Это профессиональный стандарт в сфере IT, ведь большая часть разработки ведется именно в группе.
Чек-лист готовности к выполнению домашнему заданию:
- Установите Git на своем локальном компьютере
 - Создайте профиль на GitHub
 - Настройте SSH-ключ
 - Просмотрите видео к занятию «Командная работа в Git & GitHub»
 - Изучите презентацию к занятию «Командная работа в Git & GitHub»
 
Инструкция к заданию
Задача №1: Импорт существующего проекта
Вам предоставили исходники лендинга, но в виде zip-архива. Вам нужно перенести их в систему контроля версий Git и опубликовать на GitHub. Обратите внимание, что в архиве есть мусорные файлы и системные файлы (папка tmp, файлы, заканчивающиеся суффиксами _old, _backup, Thumbs.db и .DS_Store) и их нужно проигнорировать, так как в противном случае получится, что вы храните ненужные файлы.
- Скачайте по ссылке архив с проектом.
 - Распакуйте из него папку Site For Import.
В архиве также лежит скрытая папка 
__MACOSX, она не нужна для работы. Удалите эту папку с вашего компьютера. - Создайте на базе папки Site For Import Git-репозиторий.
 - Проигнорируйте подкаталог 
tmp/и файлы, заканчивающиеся суффиксами_old,_backup. Любые символы можно заменить символом звёздочка*. - Добейтесь чтобы также были проигнорированы файлы 
Thumbs.dbи.DS_Store. - При помощи команды 
git statusубедитесь, что Git не видит ненужные файлы. - Добавьте в индекс все файлы проекта, включая 
.gitignore. Создайте коммит изменений. - Создайте отдельный репозиторий на GitHub.
 - Свяжите ваш локальный репозиторий с только что созданным удалённым репозиторием. Используйте в качестве кодового слова для связи с удалённым репозиторием 
origin. - Отправьте сделанные вами изменения на GitHub.
 
В качестве результата пришлите проверяющему ссылку на ваш репозиторий на GitHub.
Задача №2: Откат изменений
Один из ваших коллег во время работы над сайтом допустил ряд ошибок и залил всё вместе с ошибками в репозиторий на GitHub. Вам нужно отменить его последний коммит и исправить ситуацию.
- Склонируйте Git-репозиторий по ссылке.
 - Отмените один последний коммит в проекте при помощи команды 
git revert. - Создайте отдельный репозиторий на GitHub.
 - Свяжите ваш локальный репозиторий с только что созданным удалённым репозиторием. При связывании используйте кодовое слово 
targetпоскольку стандартное кодовое словоoriginуже занято. - Отправьте сделанные вами изменения на GitHub.
 
В качестве результата пришлите проверяющему ссылку на ваш репозиторий на GitHub.
Задача №3: Конфликт при push’е
Вы с коллегой вдвоём работаете над одним проектом. Вы доделали свою часть работы и пытаетесь запушить изменения в удалённый репозиторий. Но оказалось, что коллега изменил тот же файл раньше вас и уже отправил свой коммит. Вам нужно забрать изменения из удалённого репозитория, разрешить конфликт и всё же отправить свою часть работы на GitHub.
- Сделайте форк репозитория по ссылке.
 - Скачайте архив изменений. Распакуйте из него папку git-2-homeworks-fork.
 - Свяжите локальный репозиторий из архива с форком репозитория из п.1.
 - Выполните команду 
git push -u origin main, прочитайте сообщение об ошибке отправки изменений. - Заберите актуальную версию данных из удалённого репозитория при помощи команды 
git pull origin main. - Разрешите появившийся конфликт и отправьте сделанные вами изменения на GitHub.
 
В качестве результата пришлите проверяющему ссылку на ваш репозиторий на GitHub.