Git. Часть 2. Работа с ветками
![git-part-2](https://ykul.ru/storage/blog/posts/git-part-2/git2.png)
Ветка (branch) – это ответвление от истории приложения, представленная в виде коммитов.
После создания репозитория, у вас будет всего одна основная ветка. Как правило, ее называют master. Написав команду
git status
можно легко в этом убедится.
![image1.png](/storage/blog/posts/git-part-2/image1.png)
Вот как выглядит история коммитов в Idea, в созданном проекте из первой части, с единственной веткой master.
![image2.png](/storage/blog/posts/git-part-2/image2.png)
Если перейти во вкладку git (1), то видно, что есть пять коммитов (2) в ветке master (3). Слева располагаются все локальные ветки (4) и ветки, расположенные на удаленном сервере (5), в нашем случае на GitHub.
Создание новой ветки
Для того, чтобы создать новую ветку, важно понимать, что это можно сделать только ответвлением от другой. Для этого необходимо написать команду
git branch <название_ветки>
Для перехода в другую ветку, необходимо написать команду
git checkout <название_ветки>
![image3.png](/storage/blog/posts/git-part-2/image3.png)
Вернувшись в Idea справа снизу (1) видно, что мы находимся в ветке dev. Кликнув на этот элемент откроется окно (2), где располагаются все локальные ветки и ветки на удаленном сервере.
![image4.png](/storage/blog/posts/git-part-2/image4.png)
Давайте что-то изменим и создадим коммит. Теперь история выглядит вот так.
![image5.png](/storage/blog/posts/git-part-2/image5.png)
В ней можно увидеть шесть коммитов, но ветка мастер находиться в пятом коммите, а ветка dev в шестом. Это означает, что мы начали развивать историю приложения, не трогая историю в основной ветке master. Это можно проверить, переключившись на нее. В Idea можно сделать так.
![image6.png](/storage/blog/posts/git-part-2/image6.png)
Либо воспользоваться уже встроенным инструментом в Git. Необходимо кликнуть на ту ветку, с которой хотим сравнить нашу, и выбрать «Show Diff with Working Tree».
![image7.png](/storage/blog/posts/git-part-2/image7.png)
![image8.png](/storage/blog/posts/git-part-2/image8.png)
В результате открывается окно, в котором можно посмотреть все файлы, которые отличаются от ветки master, в нашем случае это файл Main.java.
Теперь можно продолжать работать в ветке dev, создавать в ней коммиты, и при этом ветка master останется нетронутой.
Слияние git merge
Для того чтобы внести все изменения из одной ветки в другую можно выполнить команду
git merge <название_ветки>
Предварительно нужно переключиться на ту ветку, куда мы хотим слить историю другой ветки.
Для наглядности, я создам еще один коммит в ветке dev, переключусь в ветку master и выполню слияние. В Idea необходимо кликнуть на нужную ветку и выбрать «Merge Selected into Current».
![image9.png](/storage/blog/posts/git-part-2/image9.png)
Теперь выполним команду
git push
для выгрузки изменений в GitHub.
![image10.png](/storage/blog/posts/git-part-2/image10.png)
Сейчас ветки master и dev имеют абсолютно одинаковую историю, то есть слияние ветки dev в ветку master произошло успешно.
Так же в Remote под веткой master теперь есть ветка dev. Это означает, что dev загружена на удаленный сервер.
![image11.png](/storage/blog/posts/git-part-2/image11.png)
Действительно, теперь можно выбрать ветку dev на GitHub и посмотреть проект в ней.
Удаление ветки
Для локального удаления ветки необходимо написать команду
git branch -d <название_ветки>
Флаг -d указывает на то, что мы хотим удалить ветку. После удаления, вся история изменений в ней пропадет, если предварительно не слили ее в другую ветку.
Так как мы выполнили слияние ветки dev в ветку master, можем не беспокоиться, что коммиты пропадут. Для удаления выбираем ветку dev и нажимаем «Delete».
![image12.png](/storage/blog/posts/git-part-2/image12.png)
Ветка локально удалилась. Но на удаленном репозитории она осталась. Поэтому к ней можно вернуться, выбрав в окне origin/dev. Для удаления ветки в удаленном репозитории необходимо ввести команду
git push <название_удаленного_сервера> -d <название_ветки>
Название удаленного сервера обычно origin. Мы можем в этом убедиться, написав команду
git remote
![image13.png](/storage/blog/posts/git-part-2/image13.png)
Либо же посмотреть в Idea.
![image14.png](/storage/blog/posts/git-part-2/image14.png)
Удалить ветку можно и через Idea, просто выбрав необходимую ветку и нажав «Delete».
![image15.png](/storage/blog/posts/git-part-2/image15.png)
После этого ветка dev на GitHub будет удалена.
Для чего нужны ветки
Обычно ветка master это самая главная production ветка. В ней проект уже должен быть протестирован, и это конечное готовое решение. При этом вы и ваши коллеги можете работать в другой ветке над новыми обновлениями, не вмешиваясь в основную линию разработки.
Не стоит бездумно создавать множество веток, в большой команде в них легко запутаться. Стоит придерживаться определенных стратегий менеджмента веток, в каждой компании они свои. Одна из самых популярных это Gitflow.