Тренировка работы с git

Что это?

Это репозиторий-задача, для тренировки навыков работы с git на очных тренингах с несколькими участниками.

Это проект консольного калькулятора.

Задание 0. Знакомство с проектом

  1. Сделайте fork этого репозитория.
  2. Склонируйте себе свой форк.
  3. Откройте проект в IDE и немного изучите его.
  4. Изучите коммиты начиная с "refactoring tests"

Задание 1. Merge master → 2args с конфликтами

  1. Перейдите в ветку 2args — это ветка разработки, в которой калькулятору добавили функциональности.
  2. Изучите по логу коммитов, что именно произошло в этой ветке, начиная с коммита "refactoring tests".
  3. Влейте в эту ветку последние изменения из master. Будут конфликты. Чтобы их грамотно разрешить, придётся разобраться с тем, какие изменения случились в master и как их подружить с изменеиями в ветке. Запустите тесты, чтобы проверить, что конфликты разрешены корректно.
  4. Сделайте push

Задание 2. Rebase handleErrors на master без формальных конфликтов

  1. Перейдите в ветку handleErrors — там некоторое время назад начали добавлять корректную обработку ошибочного ввода пользователя.
  2. Изучите историю коммитов, чтобы понять, что менялось.
  3. Сделайте rebase этой ветки на ветку master. Конфликтов быть не должно.
  4. Изучите класс с тестами. Несмотря на то, что формально конфликтов не было, в классе с тестами сейчас бардак. Приведите тесты, пришедшие из ветки handleErrors к стилю из ветки master. Сделайте коммит.
  5. Сделайте push

Задание 3. Fast forward merge 2args → master

  1. Перейдите в ветку master и влейте в неё изменения из ветки 2args.
  2. Изучите лог коммитов после этого слияния. Заметьте, что слияние не создало нового коммита, а просто передвинуло указатель master. Это случилось потому, что все изменения master-а уже были влиты в 2args.

Задание 4. Merge handleErrors → master ветки с конфликтами

  1. Перейдите в ветку handleErrors.
  2. Влейте в неё изменения из master. Будут конфликты с только что влитыми в master изменениями из 2args.
  3. Кроме формальных конфликтов могут быть и логические. Подумайте, вы интегрируете изменения из двух веток: обработки ошибок и добавления нового сценария использования. Полноценно ли эти две ветки слились?
  4. Сделайте push.