Получение навыков продвинутой работы с системой контроля версий Git и изучение механизмов его работы на глубоком уровне.
Вам дан архив с Git-репозиторием, содержащим проект на TypeScript. Необходимо скачать его и выполнить задания, приведённые ниже, в порядке следования. Для запуска проекта вам потребуется Node.js и локальная база данных PostgreSQL (лучше в Docker-контейнере). Для заполнения БД данными используйте команду npx ts-node prisma/seed.ts
. Чуть более подробный гайд по поднятию есть тут: Гайд по поднятию Postgres в Docker.
- Запустите локальный веб-визуализатор репозитория и сделайте так, чтобы в нём отображалось нормальное описание репозитория.
- Перенесите все коммиты, находящиеся в ветке
ci
, в веткуmaster
с объединением всех коммитов в один и изменением сообщения таким образом, чтобы оно полностью описывало все вносимые изменения. Удалите веткуci
. - В репозитории есть несколько альтернативных историй проекта, недоступных из текущей версии графа и не связанных с ней. Найдите последний коммит любой из версий и создайте на нём ветку
old-master
. - Определите коммит, в котором строчка 32 файла
prisma/seed.ts
изменялась в последний раз, и его дату. - В проекте существует регресс, на который имеется тест, запускающийся по команде
npm run test
. Найдите коммит, в котором проявился регресс. - В репозитории существует файл
.env
, содержащий конфиденциальную информацию. Удалите его из всех коммитов, где он присутствует, и добавьте в.gitignore
. - Сделайте так, чтобы автором коммитов в ветке
feature
были Вы. Для этого укажите в изменяемых коммитах почту, привязанную к GitHub, и своё ФИО. - Включите запоминание разрешений конфликтов. Влейте ветку
feature
вmaster
, разрешив конфликт при слиянии. Откатите слияние, внесите изменение в файлREADME.md
и снова влейте веткуfeature
вmaster
без ручного разрешения конфликта. - Проверьте целостность репозитория и убедитесь, что с ним всё в порядке. При наличии ошибок исправьте их.
- Проверьте размер репозитория (папки
.git
) и добейтесь уменьшения его размера. - В новой ветке
report
создайте файлREPORT.md
с указанием использованных для выполнения предыдущих пунктов команд и скриншотов результатов работы (поместите их в папку/docs
). После внесения всей информации сделайте несколько коммитов, каждый из которых будет содержать только те изменения файлаREPORT.md
, которые касаются отдельно взятого пункта (первый коммит добавит команды для первого пункта и соответствующие скриншоты, второй коммит — для второго и т.д.). Отдельным коммитом добавьте команды, которые использовались для поэтапной фиксации файлаREPORT.md
. Загрузите приватный репозиторий на GitHub, дайте доступ своему практику и создайте PR для слияния веткиreport
с добавлением ревьюера.
- Внутреннее устройство Git (контентно-адресуемая файловая система, ссылки и объекты, упаковка объектов);
- Частичное индексирование (
add
); - Перебазирование и изменение истории с его помощью (
rebase
); - Перенос отдельных изменений в другую ветку (
cherry-pick
); - Припрятывание (
stash
); - Массовое изменение истории (
filter-branch
); - Поиск по репозиторию (
grep
); Rerere
;- Поиск ошибок (
blame
иbisect
); - Изменение истории без переписывания (
replace
); - Восстановление удалённых файлов (
reflog
); - Обслуживание репозитория (
gc
иfsck
); - Запуск веб-интерфейса для локальной работы с репозиторием (
instaweb
).