Как работать с ветками в PhpStorm
В правом нижнем углу есть пункт «Git:master». Там пишется название текущей ветки. Чтобы создать новую, нужно кликнуть на этот пункт и выбрать New Branch.
Чтобы переключиться, выбрать в списке Local Branches нужную ветку и Checkout. Чтобы удалить или переименовать соотвественно Delete или Rename.
Наглядно это показывается в видеоуроке
Раздел Remote Branches мы рассмотрим в следующем уроке
Что могу посоветовать
- научитесь легко оперировать ветками
- создавайте больше веток
- называйте ветки по общим правилам
- пушьте ветки почаще, их легко потом удалить
Поняв магию веток, мы уже не представим свою работу без git. Любой, даже небольшой проект мы будем начинать с создания репозитория.
А работа с ветками будет такой же естественной, как и собственно написание кода. Мне кажется, именно понимание веток превращает git из прикольной тулзы в незаменимый инструмент работы.
И напоследок Киану. Просветление. Назад возврата нет
В следующем уроке мы узнаем, как работать с ветками на сервере
Спасибо за внимание и до встречи!
Следующий урок ⇨
Урок 8. Работа с ветками на сервере, git fetch
⇦ Предыдущий урок
Урок 6. git push и git pull
How to Create and Switch a branch with a single Git command?
Git provides us with an option to create a branch and switch to that branch by executing a single command. Since it is a frequent requirement that we create a branch and switch to it at the same time, this command helps a lot to achieve the same. Execute this command and check the output:
Note: The flag «b» here tells Git to create a new branch with the branch name succeeding in the flag. Git throws a «prod did not match any file» error if there is no specification of the flag for a new branch.
Execute this command, and you will automatically switch to the newly created branch.
Note: Git Branch command does not switch to the newly created branch automatically, as is done in git checkout command.
Once we finish these operations, we have a newly created branch to work. It is evident that if you know the creation, you should also know how to delete the Git branches. In the next tutorial, we will talk about the deletion of branches and why do we need to delete a branch.
Using Command Line to Create New Branch in GitHub
Creating a new branch using the command line is nearly every developer’s favourite method. Because once you get a hang of it, it’s unbelievably easy to use.
First, make sure to into your local repository. Once you’re in the right folder, execute
This will create a new branch. But before you start making changes to your code, you will have to first switch to the new branch you just created. To do that, run
Many developers, especially when they’re just getting started, forget switching to the new branch. That’s why you can use this command that will create the new branch and immediately switch you to it:
Once you’ve created a new branch and switched to it, you can start making changes in your code. However, all of these changes (including the new branch) is still only in your local machine.
To publish the new branch you created in GitHub and make it available for everyone in your team, run the following command:
Zepel Tip
If you use Zepel as your agile project management tool, you can create a new Feature for every feature you build.
With the help of deep GitHub integration, you can link the Feature to a branch in GitHub and Zepel will automatically update progress within your team.
Say you’re working on Public API for your product. You’ll create a feature called Public API in Zepel, create tasks for it, and link the feature to your new Branch using the command suggested by Zepel:
This way, you can spend all your time building quality software while Zepel does the grunt work for you.
With Branches in Git and GitHub, working on code collaboratively is a lot easier than it used to be. While there can still be inefficiencies in your development workflow, a lot of it depends on the intricacies of it.
However, if I must leave you with one thing, never directly make changes to your master branch. Nothing good has ever come off it.
Learn to Branch Out With Git
Git is all about branches: they’re cheap to create and they allow multiple streams of work to coexist, ready to be merged when complete. Once you’re familiar with creating, switching, and merging branches, you’ll be well on the way to using Git to its full potential.
Canva Free vs. Canva Pro: Is It Worth Upgrading to Pro?
Is Canva’s premium offering worth spending money on? What features do you unlock with Canva Pro? Here, we’ll compare the free and paid plans.
Read Next
About The Author
Bobby Jack
(64 Articles Published)
Bobby is a technology enthusiast who worked as a software developer for most of two decades. He’s passionate about gaming, working as Editor-in-Chief at Switch Player Magazine, and is immersed in all aspects of online publishing & web development.
More
From Bobby Jack
git fetch и git pull — забираем изменения из центрального репозитория
Для синхронизации текущей ветки с репозиторием используются команды git fetch
и git pull.
git fetch — забирает изменения удаленной ветки из репозитория по умолчания,
основной ветки; той, которая была использована при клонировании репозитория.
Изменения обновят удаленную ветку (remote tracking branch), после чего надо будет
провести слияние с локальной ветку командой git merge.
Получает изменений из определенного репозитория:
Возможно также использовать синонимы для адресов, создаваемые командой git remote:
Естественно, что после оценки изменений, например, командой git diff, надо
создать коммит слияния с основной:
Команда git pull сразу забирает изменения и проводит слияние с активной веткой.
Забирает из репозитория, для которого были созданы удаленные ветки по умолчанию:
Забирает изменения и метки из определенного репозитория:
Как правило, используется сразу команда git pull.
Что Такое Ветка Git?
Git — это распределённая система контроля версий (DVCS), в которой все члены команды имеют доступ к полной версии проекта. Её главная задача — помогать в управлении проектам, сделать процесс разработки эффективным, гибким и безопасным.
Ветки — это отдельные линии развития вашего проекта. Они позволяют работать параллельно с master веткой, при этом не влияя на неё. Когда же ваша часть кода готова, вы можете выполнить слияние, или мерж.
Ветвление Git позволяет создавать, удалять и смотреть другие ветки. Кроме того, ветка действует как указатель на моментальный снимок изменений (snapshot), которые вы внесли или хотите внести в файлы проекта. Это полезно в ситуациях, когда вы хотите добавить дополнительную функцию или устранить баг.
Ветка не только инкапсулирует изменения, но также гарантирует, что нестабильный код не попадёт к файлам основного проекта. Как только вы закончите обновлять код в ветке, вы сможете смержить изменения в ветку master.
Создаём новую ветку и добавляем в проект внесённые изменения
Добавим к проекту пустой CSS-файл и подключим его к HTML. После этого в меню редактора появятся два цвета: HTML-файл подсветится оранжевым, а CSS-файл — зелёным. Оранжевый означает, что файл уже есть в удалённом репозитории и его нужно обновить. Зелёный — файла нет в репозитории. Переходим в GitHub Desktop и добавляем коммит для этого изменения.
Подсветка файлов в меню меняется после добавления или редактирования файлов — это подсказка, чтобы мы не забывали обновлять репозиторий
Если мы откроем созданную страницу в браузере, то это будет несколько строчек текста на белом фоне. Представим такую ситуацию: нам нельзя изменять код проекта, но нужно посмотреть, как будет выглядеть страница на красном фоне. Чтобы сделать это — добавим в репозиторий новую ветку:
- Переходим в GitHub Desktop.
- Открываем раздел Current Branch, нажимаем кнопку New Branch, пишем название новой ветки и кликаем Create New Branch.
- Возвращаемся в редактор кода и тестируем идею.
После создания новой ветки не забудьте нажать на Push origin, чтобы изменения попали в удалённый репозиторий на сайте GitHub.
Создаём новую ветку в GitHub Desktop
Тестируем изменения, добавленные в новую ветку. Основная ветка в этот момент находится в прежнем состоянии и сохраняет свой код
Предположим, наша идея с красным фоном оказалась удачной и код нужно залить в основную ветку. Чтобы это сделать, переходим сайт GitHub, нажимаем кнопку Сompare & pull request и подтверждаем изменения кнопкой Merge pull request. Последний шаг — переходим в GitHub Desktop, кликаем Fetch origin и синхронизируемся с удалённым репозиторием. Теперь код из дополнительной ветки попал в основную, а изменения есть на ПК и в облаке.
Выполнение заданий
Перед выполнением нового задания, первое, что нужно сделать — это создать новую ветку из ветки master.
Находясь в ветке master выполняем команду
Флаг команды создает новую ветку под названием и тут же переключается на неё.
Если ввести команду , то в консоли будут показаны все доступные ветки, текущая (выбранная) ветка будет с пометкой
Второе, выполняем работу по условию задания.
После завершения задания необходимо зафиксировать изменения — сделать коммит (коммиты можно делать и походу задания, а не один раз в конце задания).
Для этого нам надо проиндексировать изменения.
Командой можно посмотреть текущее состояние в ветке, а именно список с названиями изменённых файлов, если они есть, и те, которые ожидают записи и сохранения (обычно они выделены красным цветом).
Из сообщения команды видно, что файл модифицирован, но не проиндексирован для коммита.
Для того, чтобы проиндексировать изменения нужно воспользоваться командой . После этой команды файл будет уже зеленым цветом (если снова ввести ).
В дальнейшем, когда будет много изменений, проще ввести или . Эта команда проиндексирует все изменения, которые были с момента последнего коммита.
Файлы готовы для коммита, поэтому командой делаем коммит.
Коммит сделан, но пока он находится только на локальной машине, а нам надо его отправить в форк, чтобы в дальнейшем предложить Pull Request.
Для того, чтобы отправить воспользуемся командой . Так же в этой команде нам надо указать куда мы отправляем и в какую ветку.
Если ввести команду консоль покажет все доступные удаленные репозитории. По умолчанию там будет один репозиторий — . Это название по умолчанию для нашего форка. В него то нам и надо отправить изменения.
Если дословно, то отправь изменения в форк (origin) в ветку module1-task1 (если такой ветки нет в форке, git создаст её)
Заходим в форк на GitHub и видим, что ветка появилась. Но в ветке изменений нет. Все верно, поскольку мы работали в ветке , там-то изменения как раз есть.
Ветка master:
Ветка module1-task1:
Теперь создаем Pull Request из ветки нашего форка в ветку нашего мастер-репозитория (академии).
Helpful Git Articles
Improved development workflow to build software products
A good development workflow is essential for teams to be agile and ship quality features faster. This guide walks through how to set up your workflow.
Vikash KoushikThe Zepel Blog
5 Git Workflows you can use to deliver better code
The right git workflow can help you improve your development process. Here are 5 types of Git Workflows you can use within your team.
Vikash KoushikThe Zepel Blog
Git Commit: How to Commit Code Changes to GitHub?
Imagine your hours’ worth of code disappearing in seconds. Stop this nightmare from becoming reality, commit your code to GitHub. Here’s how you can do it.
Ranjali RoyThe Zepel Blog
Создаём учётную запись
Перейдите на сайт github.com, зарегистрируйтесь и верифицируйте адрес электронной почты. Выберите тип аккаунта: публичный или приватный. В публичном аккаунте репозитории видны всем, а в приватном — только тем участникам, которым вы сами открыли доступ. По умолчанию вы переходите на бесплатный тариф, который можно изменить в разделе Pricing. Платные тарифы отличаются повышенной безопасностью, размером хранилища и некоторыми специальными опциями для профессиональной разработки.
Далее рекомендуем выставить настройки безопасности и заполнить профиль — на GitHub много IT-рекрутеров, которые по информации в профиле набирают кандидатов в проекты. Поставьте фото и ссылки на соцсети, откройте доступ к электронной почте и напишите о себе: расскажите про опыт, специализацию, пройденные курсы, рабочий стек технологий и выполненные проекты. Заполненный профиль повышает вероятность трудоустройства.
Creating a New Branch on the Command Line
The command-line Git program offers the most power and flexibility, but there’s a lot to learn. If you’re comfortable digging around the man pages and make heavy use of Git, it’s a great option.
Use the git branch <branchname> command to create a new branch with the given name:
This branches from the current branch, so make sure you’ve switched to the one you want to branch from before you execute that command.
You can list all branches and confirm the new one has been created using git branch without any arguments:
You can see more information, including which branch another one tracks, using the -vv flag:
If you try to create a branch before the first commit, you’ll get an error message like:
If you try to create a branch using a name that already exists, you’ll get an error message like:
The git branch command creates a new branch pointing to the same commit you’re currently working on. However, your working copy will still be pointing at the master branch. To switch to the new branch you just created, use git checkout:
The term checkout might be confusing if you’re used to other version control systems; in Git, checkout refers to switching the currently active branch. Since you’ll usually want to switch to a new branch once it’s created, there’s a shortcut for the whole process:
That command means “create a new branch called ‘dev’ and switch to it immediately”. It’s the equivalent of:
In fact, you can even use git checkout to create a branch from any other, not just the one that is currently checked out. For example, to create a new branch called another, from the branch named dev:
Как Клонировать Удалённый Репозиторий?
Чтобы клонировать репозиторий, мы будем использовать команду Git clone. Кроме того, вам также необходимо указать URL-адрес репозитория:
- Вы можете клонировать главную ветку (master branch) из удалённого репозитория с помощью HTTPS или SSH.
Для HTTPS:git clone https://github.com/imia-polzovatelia/imia-vashego-repozitorija.git
Для SSH:
git clone ssh://github.com/imia-polzovatelia/imia-vashego-repozitorija.git
- Чтобы перейти в корень клонированного репозитория, вы можете использовать команду cd:
cd vashi_prilozhenija
- Проверить состояние ветки можно с помощью простой команды Git:
git status
Как переименовать ветку
Иногда оказывается, что первоначально созданное имя ветки не самое лучшее. Его можно изменить.
Локальную
Если еще не выполнена команда push, то достаточно переименовать локальную ветку.
Чтобы переименовать локальную ветку, выполним команду:
$ git branch -m <old-name> <new-name>
Например, переименуем ветку testing в ветку test:
$ git branch –m testing test
Чтобы переименовать текущую ветку, выполним команду:
$ git branch -m <new-name>
Например, текущая ветка у нас subbranch_of_testing. Переименуем ее в subbranch:
$ git branch –m subbranch
Удаленную
Переименовать удаленную ветку (ветку в удаленном репозитории) нельзя. Можно удалить ее и отправить в репозиторий локальную ветку с новым именем:
$ git push origin :old-name new-name
здесь origin — имя удаленного репозитория (обычно удаленный репозиторий так называется),old-name — имя ветки локальной ветки,new-name — новое имя ветки в удаленном репозитории.
Например, надо переименовать ветку testing в test:
$ git push origin :testing test
Работа с ветками
Теперь, когда вы познакомились с основами ветвления и слияния, возникает вопрос: что можно или нужно делать с этим?
В этом разделе мы разберём некоторые основные рабочие процессы, ставшие возможными благодаря облегчённой процедуре ветвления, которые вы возможно захотите применить в собственном цикле разработки.
Долгоживущие ветки
Так как в Git применяется простое трёхстороннее слияние, ничто не мешает многократно объединять ветки в течение длительного времени.
Это значит, что у вас может быть несколько постоянно открытых веток, которые вы используете для разных этапов вашего цикла разработки; вы можете регулярно сливать изменения из одной ветки в другую.
Многие разработчики, использующие Git, придерживаются именно такого подхода, оставляя полностью стабильный код только в ветке — возможно, только тот код, который был или будет выпущен.
При этом существует и параллельная ветка с именем или , предназначенная для работы и тестирования стабильности; она не обязательно должна быть всегда стабильной, но при достижении стабильного состояния ее содержимое можно слить в ветку .
Она используется для слияния завершённых задач из тематических веток (временных веток наподобие ), чтобы гарантировать, что эти задачи проходят тестирование и не вносят ошибок.
По сути, мы говорим про указатели, перемещающиеся по линии создаваемых вами коммитов.
Стабильные ветки находятся в нижнем конце истории коммитов, а самые свежие наработки — ближе к её верхней части
Рисунок 26. Линейное представление повышения стабильности веток
В общем случае это можно представить в виде накопителей, в которых наборы коммитов перемещаются на более стабильный уровень только после полного тестирования.
Рисунок 27. Представление диаграммы стабильности веток в виде многоуровневого накопителя
Число уровней стабильности можно увеличить.
В крупных проектах зачастую появляется ветка или (предлагаемые обновления), объединяющая ветки с содержимым, которое ещё не готово к включению в ветки или .
Идея состоит в том, что каждая ветка представляет собой определённый уровень стабильности; как только он повышается, содержимое сливается в ветку уровнем выше.
Разумеется, можно вообще обойтись без долгоживущих веток, но зачастую они имеют смысл, особенно при работе над большими и сложными проектами.
Тематические ветки
А вот такая вещь, как тематические ветки, полезна вне зависимости от величины проекта.
Тематической веткой называется временная ветка, создаваемая и используемая для работы над конкретной функциональной возможностью или решения сопутствующих задач.
Скорее всего, при работе с другими СКВ вы никогда ничего подобного не делали, так как там создание и слияние веток — затратные операции.
Но в Git это обычное дело — много раз в день создавать ветки, работать с ними, сливать их и удалять.
Пример тематических веток вы видели в предыдущем разделе, когда мы создавали ветки и .
В каждой из них было создано несколько коммитов, после чего, сразу же после слияния с основной веткой, они были удалены.
Такая техника позволяет быстро и полностью осуществлять переключения контекста — так как работа разделена по уровням и все изменения в конкретной ветке относятся к определённой теме, что позволяет легко увидеть что именно было сделано во время процедуры просмотра кода или аналогичной.
Ветки с внесёнными в них изменениями можно хранить минуты, дни или даже месяцы, а слияние выполнить только когда это действительно потребуется, вне зависимости от порядка их создания.
Предположим, мы работаем в ветке , ответвляемся для решения попутной проблемы (), некоторое время занимаемся ею, затем создаём ветку, чтобы попробовать решить эту задачу другим способом (), возвращаемся в ветку master и выполняем там некие действия, затем создаём новую ветку для изменений, в результате которых не уверены (ветка ).
Результирующая история коммитов будет выглядеть примерно так:
Рисунок 28. Набор тематических веток
Предположим, вам больше нравится второй вариант решения задачи (), а ветку вы показали коллегам, и оказалось, что там содержится гениальная идея.
Фактически вы можете удалить ветку (потеряв коммиты и ) и слить две другие ветки.
После этого история будет выглядеть так:
Рисунок 29. История после слияния веток и
Более подробно возможные варианты рабочих схем для проектов рассматриваются в главе Распределенный Git, поэтому перед выбором схемы обязательно прочитайте эту главу.
Важно помнить, что во время всех этих манипуляций ветки полностью локальны.
Ветвления и слияния выполняются только в вашем Git репозитории — связь с сервером не требуется. prev | next
prev | next
Как Создать Новую Локальную Ветку Git?
Прежде чем создавать новую ветку, обратите внимание, что каждый репозиторий, о котором мы будем говорить дальше, содержит основную стабильную ветку (master branch), содержащую изменения, готовые для продакшена. Когда вы создаёте ветку, всё, что делает Git, это создаёт новый указатель
Мы можем создать новую локальную ветку, выполнив следующие шаги.
- Перейдите в корень вашей master branch:
cd nazvanije-repozitorija
- Вы можете создать ветку из главной ветки с помощью следующей команды:
git branch imia-novoj-vetki
Или же вы можете создать новую ветку и переключиться на неё:
git checkout -b imia-novoj-vetki
Вы также можете клонировать ветку и затем перейти на неё:
git checkout -b imia-novoj-vetki origin/imia-novoj-vetki
- Переключитесь на новую ветку:
git checkout imia-novoj-vetki
- Наконец, убедитесь, что вы находитесь в новой ветке:
git status
Переносим удалённый репозиторий на ПК
Перейдите на сайт desktop.github.com и скачайте GitHub Desktop — это приложение, которое позволит синхронизировать удалённый репозиторий на GitHub и файлы на вашем компьютере без командной строки терминала:
- Скачиваем приложение под свою операционную систему.
- Открываем приложение и проходим авторизацию — нужно указать электронную почту и данные вашего GitHub-аккаунта.
- Приложение синхронизируется с удалённым репозиторием и предложит выполнить одно из следующих действий: создать новый репозиторий, добавить локальную папку с компьютера в GitHub Desktop или клонировать существующий репозиторий в папку компьютера.
Мы создали тестовый удалённый репозиторий, поэтому выберем третий вариант — клонировать существующий репозиторий в папку компьютера.
После установки GitHub Desktop запросит синхронизацию с GitHub-аккаунтом. Если аккаунта нет, приложение предложит его создать
Рабочее пространство в GitHub Desktop — мы можем клонировать репозиторий, создать новый или перенести нужные файлы с компьютера
Выбираем репозиторий, сохраняем его на рабочем столе и жмём кнопку Clone
После клонирования репозитория в рабочем пространстве появятся три вкладки: Current Repository, Current Branch и Fetch origin.
- Current Repository — раздел позволяет переключаться между несколькими репозиториями, отслеживать невнесённые изменения (вкладка Changes) и смотреть историю коммитов (вкладка History).
- Current Branch — раздел позволяет переключаться между несколькими ветками проекта.
- Fetch origin — раздел обновляет внесённые изменения и синхронизирует файлы локального и удалённого репозитория.
Обратите внимание на раздел Current Repository и вкладку Changes. В левом нижнем углу есть окно для добавления коммитов и комментариев — это означает, что вы можете записывать каждый шаг, не посещая сайт GitHub
Рабочее пространство для работы с клонированным репозиторием
История изменений нашего репозитория
Как создать подветку ветки
Обычно мы ответвляемся от основной ветки master, но не всегда. Иногда требуется сделать ответвление от созданной ветки — так сказать, ответвление второго порядка.
Предыдущая команда, с помощью которой мы создавали ветку:
$ git branch testing
создает ответвление от основной ветки master.
Если нам надо ответвиться не от основной ветки, а от вновь созданной testing, то выполним поочередно команды:
$ git checkout testing $ git checkout -b subbranch_of_testing testing
Первая команда переключит нас на ветку testing.
Вторая команда создаст ветку с именем subbranch_of_testing, ответвляющуюся от testing, и переключит нас на нее.
Как понятно из имени, subbranch_of_testing – это подветка ветки testing.