В Git и большинстве других инструментов VCS ветвление является одной из основных конструкций, которые действительно делают его полезным для разработки программного обеспечения. Эти ветки почти как новая копия вашего кода в текущем состоянии, которую затем можно использовать для разработки нового кода.
Например, всякий раз, когда вам нужно создать новую функцию, исправить ошибку или переписать какой-либо код, рекомендуется создать новую ветку, чтобы ни одно из ваших изменений не повлияло на «основную» версию кода. Это важно, поскольку вернуть изменения кода из памяти может быть очень сложно, особенно в сложных системах.
Есть несколько способов создания новых веток в Git, многие из которых отличаются тем, как ваша ветка создается из основной ветки, будь то из вашей текущей ветки, другой ветки, тега и т. Д.
Наиболее распространенный способ создания новой ветки следующий:
$ git checkout -b <branch-name>
Это чаще всего используется, потому что он создаст для вас ветвь из вашей текущей ветки и переключит вас на эту ветку с помощью одной команды.
Вы также можете при желании указать другую ветку, из которой будет создана новая:
$ git checkout -b new-branch dev-branch
Switched to branch 'new-branch'
Другой распространенным способом является использованием branch
команд
непосредственно (что checkout
делает за кадром):
$ git branch <branch-name>
Однако, как вы можете видеть из следующего примера, это не переключает нас автоматически на новую ветку и удерживает нас на нашей текущей:
$ git branch
* master
$ git branch new-branch
$ git branch
* master
new-branch
Если вы хотите работать с веткой немедленно, вам нужно переключиться на
нее вручную, используя команду checkout
:
$ git checkout new-branch
Switched to branch 'new-branch'
Создание ответвления из коммита
Как упоминалось выше, есть несколько других способов создания новых веток. Один из таких способов - указать конкретный коммит через его хэш:
$ git branch <branch-name> <hash>
Как всегда с Git, на самом деле не нужно указывать весь хеш, всего несколько символов.
$ git branch
* master
$ git branch commit-branch 735c5b4
$ git branch
commit-branch
* master
Вы также можете использовать git checkout -b <branch-name> <hash>
,
который создаст ветку и проверит ее, все в одной команде.
Создание ответвления из тега
Подобно созданию ветки из коммита, вы также можете создать ветку из тега. Это особенно полезно, поскольку, на мой взгляд, теги - лучший способ ссылаться на определенный момент в истории проекта.
Поэтому, если вы создавали теги на протяжении всей истории вашего проекта, вы можете создать новую ветку, как и раньше, но с тегом в качестве идентификатора.
$ git branch tag-branch v0.4.12
$ git branch
tag-branch
* master
И снова можно использовать синтаксис
git checkout -b <branch-name> <tag>