Руководство по Git. Управление ветками.

В данной статье мы рассмотрим основы управления ветками в Git.

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


Создание новой ветки

Для создания новой ветки нам необходимо использовать следующую команду:


git branch version_2.0

Теперь посмотрим, какие именно ветки есть в нашем проекте:


git branch 
* master
  version_2.0

Звёздочкой отмечена активная ветка master – которая является главной веткой проекта по умолчанию.


Переключение между ветками
Для переключения между ветками используется следующая операция:


 git checkout version_2.0 
Switched to branch 'version_2.0'

Графически это можно представить следующим образом:

github_flow

 

Мы можем объединить процесс создания новой ветки и переключения на неё.

Для этого используется следующая команда:


 git checkout -b new_branch
Switched to a new branch 'new_branch'

Проверим какие ветки есть в проекте, и какая из них активна:


git branch 
  master
* new_branch
  version_2.0

Предположим, что мы внесём изменения в ветке new_branch.
Структура проекта в ветке master выглядит так:

gitmasterbranchstructurebefore

 

Добавим новый класс в ветке new_branch, а именно, добавим новый класс:

Customer.java


package net.proselyte.gittutorial.company;

import java.util.Set;

/**
 * Simple JavaBean domain object that represents a Customer
 *
 * @author Eugene Suleimanov
 * @version 1.0
 */
public class Customer {
    private String name;
    private Set projects;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Set getProjects() {
        return projects;
    }

    public void setProjects(Set projects) {
        this.projects = projects;
    }

    @Override
    public String toString() {
        return "Customer{" +
                "name='" + name + '\'' +
                ", projects=" + projects +
                '}';
    }
}

И подтвердим данные изменения:


 git add --all
 git commit -m "Adding class Customer.java"
[new_branch 8d9522c] Adding class Customer.java
 2 files changed, 155 insertions(+), 20 deletions(-)
 create mode 100644 src/net/proselyte/gittutorial/company/Customer.java

Посмотрим структуру проекта в ветке new_branch:

gitnewbranchstructure

 

Переключаемся на ветку master:


 git checkout master 
Switched to branch 'master'

И проверим структуру проекта:

gitmasterbranchafter

 

Как мы видим, ветка master осталась неизменной.

Для того, чтобы применить изменения в данной ветке нам необходимо выполнить слияние ветки master с веткой new_branch.


Слияние веток

Для слияния двух веток используется команда merge.
Переключаемся на ветку, с которой хотим выполнить слияние:


git checkout master 
Switched to branch 'master'

И выполняем следующую команду:


git merge new_branch 
Updating 3dab8e0..ef74ec7
Fast-forward
 src/net/proselyte/gittutorial/company/Customer.java |  38 +++++++++++++++++++++++++++++
 1 file changed, 152 insertions(+), 19 deletions(-)
 create mode 100644 src/net/proselyte/gittutorial/company/Customer.java

Проверим структуру проекта в основной ветке после слияния:

gitaftermergingstructure

 


Удаление веток

На данный момент в нашем проекте есть следующие ветки:


git branch 
* master
  new_branch
  version_2.0

Ветки new_branch и version_2.0 нам больше не нужны и мы можем их удалить.
Для удаления веток используется следующая команда:


 git branch -D new_branch 
Deleted branch new_branch (was ef74ec7).

Повторим процесс для ветки version_2.0


git branch -D version_2.0 
Deleted branch version_2.0 (was d27f1a0).

Теперь проверим ветки проекта:


git branch 
* master

На этом мы заканчиваем изучение управления ветками и изучение технологии Git.

Более подробно с Git вы можете ознакомиться, изучив книгу Pro Git по ссылке: https://git-scm.com/book/en/v2