Использование веток

Рано или поздно в любом проекте возникает ситуация, когда требуется заморозить изменения, но продолжать работать, а на замороженные изменения накладывать только баг-фиксы. Для этой цели служат ветви (branch)

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

git checkout --track -b name_of_newbranch origin/master

В результате этой команды вы увидите примерно такое сообщение:
Branch name_of_newbranch set up to track remote branch refs/remotes/origin/master.
Switched to a new branch "name_of_newbranch"

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

Если в этой команде заменить origin/master на origin/remote_branch_name то вы создадите ветку от другой ветки.

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

git push origin local_branch_name:remote_branch_name

Разумеется, надо также уметь и получать ветки в свое распоряжение:
git branch local_branch_name origin/remote_branch_name
git checkout local_branch_name
 

В результате вы получите искомую ветку после следующего сообщения:
  Switched to branch "local_branch_name"
 

При работе с несколькими ветками одновременно в конце концов возникает необходимость применить все изменения с одной ветки на базовую (ну конечно это возникает не всегда, но часто), причем, как правило, базовая ветка с тех пор успела поменять свое содержимое. В таких случаях для слияния веток рекомендуется использовать команду git rebase.

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

Пример использования:

 git checkout feature1
 git rebase master
 git checkout master
 git merge feature1