Тренировка работы с git
Что это?
Это репозиторий-задача, для тренировки навыков работы с git на очных тренингах с несколькими участниками.
Это проект консольного калькулятора.
Задание 0. Знакомство с проектом
- Сделайте fork этого репозитория.
- Склонируйте себе свой форк.
- Откройте проект в IDE и немного изучите его.
- Изучите коммиты начиная с "refactoring tests"
master → 2args
с конфликтами
Задание 1. Merge - Перейдите в ветку
2args
— это ветка разработки, в которой калькулятору добавили функциональности. - Изучите по логу коммитов, что именно произошло в этой ветке, начиная с коммита "refactoring tests".
- Влейте в эту ветку последние изменения из
master
. Будут конфликты. Чтобы их грамотно разрешить, придётся разобраться с тем, какие изменения случились вmaster
и как их подружить с изменеиями в ветке. Запустите тесты, чтобы проверить, что конфликты разрешены корректно. - Сделайте push
handleErrors
на master
без формальных конфликтов
Задание 2. Rebase - Перейдите в ветку
handleErrors
— там некоторое время назад начали добавлять корректную обработку ошибочного ввода пользователя. - Изучите историю коммитов, чтобы понять, что менялось.
- Сделайте rebase этой ветки на ветку
master
. Конфликтов быть не должно. - Изучите класс с тестами.
Несмотря на то, что формально конфликтов не было, в классе с тестами сейчас бардак.
Приведите тесты, пришедшие из ветки
handleErrors
к стилю из веткиmaster
. Сделайте коммит. - Сделайте push
2args → master
Задание 3. Fast forward merge - Перейдите в ветку master и влейте в неё изменения из ветки
2args
. - Изучите лог коммитов после этого слияния. Заметьте, что слияние не создало нового коммита, а просто передвинуло указатель
master
. Это случилось потому, что все изменения master-а уже были влиты в2args
.
handleErrors → master
ветки с конфликтами
Задание 4. Merge - Перейдите в ветку
handleErrors
. - Влейте в неё изменения из
master
. Будут конфликты с только что влитыми вmaster
изменениями из2args
. - Кроме формальных конфликтов могут быть и логические. Подумайте, вы интегрируете изменения из двух веток: обработки ошибок и добавления нового сценария использования. Полноценно ли эти две ветки слились?
- Сделайте push.