Комментарии авторов к заданию по GIT от ResultSchool

Обновлено:

На нашем курсе Frontend developer в школе ResultSchool есть урок по GIT. Мы с особым вниманием подошли к созданию практического задания. Нам было важно, чтобы оно было не просто учебным, но и давало студентам возможность столкнуться с реальными сложностями и проблемами, которые могут возникать в процессе работы с GIT.

В процессе выполнения задания у учеников возникло много различных вопросов по заданию и ниже представлены ответы на самые популярные из них.

Надеюсь, что этот материал поможет вам лучше понять задание и справиться с его выполнением.

Почему так сложно?

Задания были специально подобраны таким образом, чтобы в процессе обучения вы столкнулись с весьма сложными сценариями работы с GIT. Это сделано для того, чтобы вы могли получить более глубокое понимание тонкостей использования этого инструмента. Получив опыт работы с различными ситуациями, вы сможете более эффективно применять GIT в своей повседневной работе.

Можно как-то созвониться, что бы куратор рассказал, показал как задачку решить по гиту правильно?

Вы всегда можете связаться с куратором, но есть определенные условия, при которых это будет наиболее эффективно.

  • Если вы уже решили задачу, но хотите обсудить свое решение,
  • Если вы сделали более 10 попыток решить задачу самостоятельно и у вас все равно не получается.

При выполнении одного из условий созвон будет наиболее полезным. Эти условия помогут вам максимально использовать время созвона и получить наибольшую пользу от общения с куратором. Помните, что цель обучения - не только найти правильное решение, но и понять процесс его поиска. До выполнения этих условий, встреча с куратором может не дать ожидаемого результата.

Результатом выполнения всех задач будет ссылка на репозиторий?

Да. В данном случае нужна ссылка на отдельный репозиторий.

В первом задании, именно установку nodejs нужно вытянуть, не затрагивая установку другого пакета, верно понимаю?

Да, вы абсолютно правильно понимаете. В первом задании вам нужно выделить именно установку nodejs, не затрагивая установку другого пакета. Этот навык может оказаться полезным в реальной работе с GIT.

Ведь бывают случаи, когда вы случайно включаете в коммит что-то, что не должно было попасть в GIT. Или же вам нужно применить часть функционала в другой ветке или отправить на ревью раньше остального кода. Умение работать с GIT на таком уровне позволяет вам гибко управлять вашим кодом и эффективно сотрудничать с командой.

Как так получилось оторвать ветку develop от ветки main?

Это происходит из за бездумного использования git rebase.

Такое бывает когда мы сделали в ветке main какое-то количество коммитов, например 3, и сделали ветку develop. В этот момент ветка develop начинается от коммита M3, который есть в ветке main.

После этого мы ведём разработку в ветке develop и внесли очередные N коммитов. И тут нам приспичило по какой-то причине как-то изменить текстовку или содержимое коммита M3. Как раз именно в этот момент мы получаем ситуацию когда у коммита M3 в ветке develop изменится хеш коммита и мы получим коммит с хешом D0.

Выходов из этой ситуации может быть несколько, и в рамках поставленной задачи вам нужно нащупать хотя бы 1 жизнеспособный способ разрешения малоприятной ситуации.

В общем виде если ветку main обозвать - родительская ветка, а develop - дочерняя, то можно сделать следующий вывод:

Операции связанные с перетиранием истории коммитов можно производить только в рамках дочерней ветки.

Следствие: после влития дочерней ветки в родительскую, подобные операции над влитыми коммитами будут также причинять проблемы.

Как должно выглядеть дерево коммитов?

Дерево коммитов должно выглядеть приблизительно так:

result-school-git-task-target-git-tree.png