На нашем курсе 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
- дочерняя,
то можно сделать следующий вывод:
Операции связанные с перетиранием истории коммитов можно производить только в рамках дочерней ветки.
Следствие: после влития дочерней ветки в родительскую, подобные операции над
влитыми коммитами будут также причинять проблемы.
Как должно выглядеть дерево коммитов? Дерево коммитов должно выглядеть приблизительно так:
