yandex

Как работать с ветками в Git: branch, checkout


    Дарим 20 000 бонусов <br/>
    <span class="bold">для юрлиц и ИП</span>
Дарим 20 000 бонусов
для юрлиц и ИП
Подробнее
Avatar icon

Александра Гонтарева

Редактор блога

Статья

Время чтения

6 минут

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

О том, какие команды помогут закоммитить изменения, внести их в новую ветку, а потом изменить ее или удалить при необходимости, поговорим в этой статье. То есть расскажем про git branch и git checkout и про то, как они помогают тестировать новые функции без опасений, что это навредит рабочей версии кода.

Что такое ветка в Git

В Git ветка представляет собой указатель на конкретный коммит в истории изменений. Таких веток в одном репозитории может быть много, однако среди них всегда есть главная — master (main). Она появляется в момент создания репозитория, но по сути ничем не отличается от дополнительных веток, которые добавляются позже.

Ветвистая структура репозитория
Ветвистая структура репозитория

Важно знать, что каждая ветка в репозитории приложения ссылается на последний коммит в своей истории, его называют HEAD. Каждый раз, когда разработчик переключается с одной ветки на другую, Git автоматически обновляет этот указатель, чтобы дать понимание, в какой части проекта произошли изменения.

Что делает команда git branch

Основная команда для ветвления в проекте — git branch. Она позволяет:

  • открыть новую ветку с уникальным именем;

  • вывести перечень всех веток, которые входят в конкретный репозиторий Git;

  • изменить название ветки;

  • удалить неиспользуемые ветки.

Основные возможности git branch и git checkout

Чтобы добавить в репозиторий ветку, нужно ввести команду:

git branch <имя_ветки>

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

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

git checkout -b

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

Как переключиться на действующую ветку

Для того чтобы переключить ветку или конкретный коммит в рабочее состояние, используйте команду git checkout. При ее вводе все файлы в рамках рабочего каталога обновляются. Затем отображается содержание коммита или ветки, выбранной разработчиком, а Git начинает воспринимать ее в качестве активной.

Дополнительно git checkout позволяет:

  • быстро переключаться с одной ветки на другую;

  • создать ветку и мгновенно на нее переключиться;

  • переключиться на конкретный коммит.

Схема перехода по веткам
Схема перехода по веткам

Также команду git checkout можно использовать, чтобы:

  • перейти на ветку с обновленным функционалом;

git checkout new-feature

  • создать новую ветку с аналогичным названием и моментально ее открыть;

git checkout -b new-feature

  • переключиться на определенный коммит;

git checkout commit hash

Вышеуказанная команда приведет к созданию состояния detached HEAD. При этом в дальнейшем будут потеряны все коммиты, сделанные в этом состоянии, если предварительно не сделать для них новую ветку и не сохранить их. Чтобы не потерять коммиты, используйте:

git checkout -b

Как управлять ветками

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

Как фиксировать изменения

Если вам нужно исправить ошибку в коде, перед фиксацией изменений нужно обновить локальную ветку через последовательный ввод команд git fetch и git pull.

Затем, чтобы зафиксировать изменения в определенной ветке:

  • Сперва введите две команды: первая — git add, вторая — git commit -m. А после пробела перечислите внесенные изменения.

  • Затем примените команду git status, чтобы проверить состояние кода.

Как отправить ветку в удаленный репозиторий

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

git push -u origin <имя_ветки>

Эта команда откроет новую ветвь на удаленном сервере, после чего зафиксирует в ней все коммиты.

Как изменить имя ветки

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

А в том случае, если требуется изменить название ветки, не заходя в ее, используйте:

git branch -m <текущее_имя> <новое_имя>

Как удалить ветку

Для удаления ветки нужно ввести команду:

git branch -d <имя_ветки>

При этом имейте ввиду, что ввод git branch -d без закрепленных в ветке модификаций выдаст ошибку. Чтобы принудительно удалить такую ветвь, используйте ключ -D вместо -d.

Кстати, важно удалять не только локальные, но и отправленные на удаленный сервер неиспользуемые ветки. И тут пригодится команда:

git push origin --delete <название ветки>

Команды для удаления локальных и удаленных веток
Команды для удаления локальных и удаленных веток

Просмотр и сравнение веток

Еще в Git доступны дополнительные возможности работы с ветками. Например, можно:

  • посмотреть, в каком состоянии находятся файлы в конкретной ветке;

  • проанализировать историю изменений в ветке;

  • сравнить ветки перед тем, как смержить.

Эти возможности Git полезны в разработке, потому что позволяют оценивать объем и характер изменений в ветках прежде, чем приступать к их слиянию и релизу очередной версии кода.

Как проверить состояние файлов в ветке

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

История коммитов: как просмотреть и изучить

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

Как просмотреть различия между ветками

Для сравнения изменений, добавленных в две ветви, нужно использовать команду git diff, после пробела указав наименования обеих веток:

git diff <ветка1> <ветка2>

Удаленные ветки: как с ними работать

Удаленные ветки — это ссылки на состояние веток, находящихся в удаленных репозиториях. С их помощью можно делиться кодом с другими разработчиками, выстраивая прозрачную совместную работу над проектом.

Как переключиться на удаленную ветку

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

git fetch --all

Сразу после этого появится возможность переключения на удаленную ветку с командой git checkout и наименованием ветки после пробела.

Как синхронизировать удаленные ветки

Синхронизация локального репозитория с удаленным позволяет загрузить обновления, сделанные другими разработчиками. Для этого нужно выполнить команду git fetch— она обновит информацию о ветках и коммитах, но при этом не затронет изменения, привнесенные в текущую ветвь.

Отличие команды checkout от switch

В более поздних версиях Git появилась команда git switch. Она работает исключительно с ветками репозитория, тогда как checkout — это универсальный инструмент для навигации по веткам, коммитам и файлам.

Работа с Git в облаке

С большинством популярных решений для Git, например, с GitHub, GitLab, Bitbucket, можно работать в облаке Cloud.ru. При таком использовании эти решения помогают значительно повысить эффективность и скорость разработки проектов даже очень большими распределенными командами, потому что облако гарантирует им бесперебойный и мгновенный доступ ко всем вносимым изменениям.

Cloud.ru Evolution — публичное облако на собственных разработках

Ваш доступ к IaaS- и PaaS-сервисам, вычислительным мощностям с GPU и выделенным физическим серверам

Попробовать

Коротко о ветках в Git

Умение работать в Git помогает лучше организовать рабочий процесс всей команды, позволяя гибко использовать исходную кодовую базу и безопасно развивать проект. А само ветвление сильно упрощает разработку, ведь ветки обеспечивают безопасный совместный доступ к коду. Именно они дают возможность работать над созданием нового продукта пластично и без проблем.

Содержание

  • Что такое ветка в Git
  • Что делает команда git branch
  • Основные возможности git branch и git checkout
  • Как управлять ветками
  • Просмотр и сравнение веток
  • Удаленные ветки: как с ними работать
  • Отличие команды checkout от switch
  • Работа с Git в облаке
  • Коротко о ветках в Git

Вам может понравиться