Перейдите к следующему слайду, нажав кнопку Вправо
Разбираемся, что такое ветки и зачем они нужны
Подготовлено онлайн-курсом
Как это всё выглядит?
Основная стабильная версия кода
А вот тут коммиты, которые его исправляют
А тут добавляем фичу
Вот тут мы начали исправлять баг
Зачем оно нужно?
Основная стабильная версия кода, которая всегда работает
Если программист накосячит вот тут - это не повлияет на основную версию кода, пока мы не "вольём" изменения в основную ветку
Мы можем добавлять нововведения не вникая в то, что происходит с основной версией кода в данный момент. Изменения тех разработчиков нас не коснутся, пока мы сами этого не захотим.
И как "вливать" код в основной?
На этом коммите мы создали зелёную ветку и начали там добавлять фичу
Здесь мы добавляем новый функционал к коду, не заботясь о том, чтобы переписывать всё каждый раз, когда коммитят в основной ветке.
Эти коммиты не повлияют на то, что произойдёт в зелёной ветке. Их как будто не было.
Мы сделали "git merge" и добавили все изменения зелёной ветки к основной
Как это выглядит в жизни?
Написание сайта в разгаре, решаем добавить встроенный интернет-магазин
На сайте обновился дизайн
Добавили лицензию в репозиторий сайта
Всё ровно в том состоянии, как было до принятия решения о интернет-магазине
Добавили страницу с товарами
Оказалось, что весь сайт рухнул из-за новой страницы. Хорошо, что у нас есть стабильная версия! Поправили баг
Добавили метод оплаты
(см. дальше) ==>
Как это выглядит в жизни?
В этот момент в зелёной ветке нет лицензии и старый дизайн
В этот момент в синей ветке нет онлайн-магазина
К версии с новым дизайном мы добавили интернет-магазин. Но что, если всё сломается из-за несовместимых изменений?
Это мёрдж-коммит. В нём объединились изменения
Всё. Мёрдж-коммит всё сломал.
В Github Desktop:
В консольном git:
Нет, просто нужно поправить конфликт
В Github Desktop:
Эта строчка в master (основной ветке)
Эта строчка в origin/stable/2.1.x - ветке, с которой мы сливались
Выберите ту, которую хотите оставить, удалите лишнюю и "мусор" вокруг
(строчки, которыми git пытался подсказать вам, где искать конфликт)
Нет, просто нужно поправить конфликт
В Github Desktop:
Например, вы решили оставить эту. Поправьте конфликты везде, где они есть. Затем закоммитьте изменения мёрдж-коммитом. Поздравляем, вы слили ветки в одну!
Откуда берутся эти конфликты?
Поменял в файле django/db/backends/mysql/features.py 90-ую строчку
Git не знает, кому верить. Ему приходится спрашивать у вас.
Поменял в файле django/db/backends/mysql/features.py 90-ую строчку
И чью 90ую строчку добавлять?
Создать ветку
В Github Desktop:
В консольном git:
(master)$ git branch название-ветки
Сменить ветку
В Github Desktop:
В консольном git:
(master)$ git checkout название-ветки
(просто кликните на нужную)
Влить одну ветку в другую
(master)$ git merge куда-влить откуда-влить
В Github Desktop:
В консольном git:
Создано для онлайн-курса https://dvmn.org