Переключение веток

Переключиться на существующую ветку вы можете несколькими способами, мы покажем два из них. Сейчас вы находитесь в ветке bugfix/246. Давайте переключимся на ветку master.

Во-первых, в панели Навигатор вы можете выполнить на проекте контекстную команду Групповая разработка > > Переключить На > master.

В результате указатель HEAD переместится на ветку master.

Во-вторых, в панели История вы можете выполнить на нужном коммите контекстную команду Извлечь....

В результате указатель HEAD снова переместится на ветку bugfix/246.

Какой в этом смысл? Давайте изменим конфигурацию и зафиксируем изменения.

Это интересно, потому что указатель на вашу ветку bugfix/246 переместился вперед, а master все еще указывает на тот коммит, где вы были в момент переключения веток. Давайте переключимся назад на ветку master.

Возможная проблема: Чтобы видеть в панели История все ветки, а не только ветку, на которую указывает HEAD, включите в настройках панели фильтр refs/heads/**.

Произошло две вещи. Указатель HEAD переместился назад на ветку master, а файлы в рабочем каталоге вернулись в то состояние, которое было сохранено в снимке, на который указывает ветка. Это также означает, что все изменения, вносимые с этого момента, будут отнесены к старой версии проекта. Другими словами, откатилась вся работа, выполненная в ветке bugfix/246, а вы можете продолжать в другом направлении.

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

Давайте сделаем еще одно изменение и зафиксируем его.

Теперь история вашего проекта разделилась. Вы создали ветку, переключились в нее, поработали, а затем вернулись в основную ветку и поработали в ней. Эти изменения изолированы друг от друга: вы можете свободно переключаться туда и обратно, а когда будете готовы, можете слить их вместе. И все это делается простыми командами: Групповая разработка > > Переключить На (или Извлечь) и Групповая разработка > > Зафиксировать....

Создание и удаление веток совершенно незатратно, так как ветка в Git'е это всего лишь файл, содержащий 40 символов контрольной суммы SHA-1 того коммита, на который он указывает. Создание новой ветки совершенно быстро и просто, это всего лишь запись 41 байта в файл (40 знаков и перевод строки).

Это совершенно отличает Git от ветвления в большинстве более старых систем контроля версий, где все файлы проекта копируются в другую папку. Там ветвление для проектов разного размера может занять от секунд до минут. В Git'е ветвление всегда мгновенное. Также, поскольку при фиксировании изменений мы сохраняем указатель на родительский коммит, найти подходящую базу для слияния в основном очень просто, и это делается для нас автоматически. Эти возможности побуждают разработчиков чаще создавать и использовать ветки.

Давайте посмотрим, почему и вам имеет смысл делать так же.