Предыдущий ролик Следующий ролик  

Видео урок: Слияние кода

Git: обучение основам

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

Итак, на данный момент я нахожусь в бранче seo_title, и мы знаем это, потому что в последней главе я настроил приглашение командной строки, которое показывает, в каком бранче я нахожусь. Итак, я в seo_title, давайте вспомним, какие другие бранчи у нас есть, у нас есть основной бранч и бранч shorten_title. А теперь я хочу вставить изменения, которые были сделаны в seo_title, в основной бранч. Если вы не помните, в чем состояли изменения, мы можем их просмотреть, diff master..seo_title, и вот они. Мы просто добавили вот сюда в конец кусочек текста.

Теперь мы перенесем это изменение в основной бранч, чтобы оно также здесь существовало. Первый шаг заключается в том, что мы должны убедиться, что сделали чекаут бранча, куда мы переносим изменения, бранча-получателя. Давайте сделаем это. Пишем git checkout master. Теперь мы находимся в мастер-бранче. Таким образом, в основной бранч будут перенесены изменения, которые находятся в seo_title. И уже из мастер-бранча я прописываю git merge seo_title. Все легко и просто, всего лишь git merge seo_title. Затем Git говорит, что обновление произошло, предоставляет сводку сделанных изменений, вот и все.

Давайте посмотрим, пишем git log, это логи для основного бранча, и вот видите, верхний коммит - это измененное название в index.html, так что если теперь мы откроем index.html, вы увидите, что все изменения на месте. Итак, Git взял коммит, который был в seo_title, но у него не было слепка этих изменений, и он внес это изменение в основной бранч. В общем, в самых легких случаях это все, что нужно для слияния. Вы делаете чекаут получающего бранча, затем вы пишете git merge, а затем целевой бранч, или бранч, откуда вы хотите получить изменения, вот и все.

А теперь давайте очистим наш экран и напишем git diff, в этот раз между основным бранчем и seo_title, теперь Git скажет нам, что никакой разницы между ними нет. Если бы мы использовали git branch --merged, эту команду мы изучили, когда сравнивали разные бранчи, Git сказал бы нам, что seo_title полностью включен в основной бранч. Если бы мы захотели, мы могли бы полностью удалить seo_title. Мы можем использовать опцию с маленькой d, и бранч будет удален.

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