Git для начинающих. Урок 8.
Ветки на сервере
Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.
Просмотр веток на сервере
- git branch выводит список локальных веток
- git branch -r (remote) — список веток на сервере
- git branch -a (all) — список всех веток, локальных и удаленных
Удаленные ветки начинаются с remotes/origin/
$ git branch master * news $ git branch -a master * news remotes/origin/master remotes/origin/news remotes/origin/students
Как отслеживать новые ветки на сервере
Если мы в проекте не одни, то в нем будут постоянно появляться новые ветки. Но как их увидеть?
Допустим, у нас в проекте есть только ветка master. В это время кто-то добавил новую ветку news. Просто git branch -a удаленные ветки не покажет
$ git branch -a * master remotes/origin/master
Чтобы их увидеть, сначала нужно выполнить команду git fetch, которая сходит на сервер и проверит, что там есть нового
$ git fetch remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From github.com:Webdevkin/site-git * [new branch] news -> origin/news
Мы видим, что появилась новая ветка news, и команда git branch -a это подтверждает
$ git branch -a * master remotes/origin/master remotes/origin/news
Обратите внимание, ветка news появилась только в списке удаленных, но не локальных. То есть команда git fetch не создает локальные ветки, она просто подтягивает информацию о них. Чтобы переключиться на новую ветку, нужно выполнить git checkout
$ git checkout news Branch news set up to track remote branch news from origin. Switched to a new branch 'news'
Вот теперь мы переключились на новую ветку
$ git branch -a master * news remotes/origin/master remotes/origin/news
Как удалить ветку с сервера
Выполняем пуш ветки, только с флагом —delete
$ git push origin --delete news To git@github.com:Webdevkin/site-git.git - [deleted] news
Как работать с удаленными ветками в PhpStorm
Точно так же, как и с локальными, только в списке Remote Branches. Чтобы увидеть новые ветки, тоже нужно выполнить команду fetch. Правый клик — Git — Repository — Fetch. А уже потом можно переключаться на эту ветку: Remote Branches — branch_name — Checkout as.
Что могу посоветовать
- регулярно просматривайте github — так вы будете лучше понимать, чем занимаются ваши коллеги
- не забывайте делать git fetch перед переключением на удаленную ветку
- обсудите с коллегами правила именования веток и соблюдайте их
Я не в первый раз упоминаю про именование коммитов и веток. Если вы работаете один, то как называть — ваше дело. Но если работаете в команде, то несоблюдение каких-то правил могут привести примерно к этому

Чтобы не ставить в такие ситуации ваших коллег, важно договориться, как именовать ветки и как подписывать коммиты. Это организационные моменты, которые очень упрощают работу с git. Подробнее мы их обсудим во второй части курса.
На этом все. В следующем уроке мы поговорим о слиянии или мерджах веток.
Спасибо за внимание и до встречи!
Все уроки курса
- Вводный урок
- 1. Установка и базовая настройка git
- 2. Создание и клонирование репозитория git
- 3. Делаем первые изменения, git status и git diff
- 4. Коммиты и история коммитов, git commit, git log и git show
- 5. Подробнее об истории коммитов. Путешествие по истории
- 6. Работа с сервером, git push и git pull
- 7. Ветки — главная фишка git, git branch и git checkout
- 8. Работа с ветками на сервере, git fetch
- 9. Слияния или мерджи веток, git merge
- 10. Конфликты и их разрешение
- Платная часть курса. Презентация
- * 11. Работа с gitignore и git exclude
- * 12. Буфер обмена git, git stash
- * 13. Копирование коммитов, git cherry-pick
- * 14. Отмена и редактирование последнего коммита
- * 15. Отмена произвольного коммита, git revert
- 16. Склеивание коммитов, git rebase —interactive и git reflog
- * 17. Зачем склеивать коммиты. Плюсы и минусы сквоша
- * 18. Работа с git rebase. Отличия от merge
- * 19. Что такое git push —force и как с ним работать
- * 20. Ищем баги с помощью git, git bisect
- * 21. Как и зачем работать с тегами git
- * 22. Процессы: github flow и git flow
- * 23. Псевдонимы в git
- 24. Мердж-реквесты
- * 25. Форки
40. Удаленные ветки
Давайте посмотрим на ветки, доступные в нашем клонированном репозитории.
Выполните:
git branch
Результат:
$ git branch * master
Как мы видим, в списке только ветка master. Где ветка style? Команда git branch выводит только список локальных веток по умолчанию.
01 Список удаленных веток
Для того, чтобы увидеть все ветки, попробуйте следующую команду:
Выполните:
git branch -a
Результат:
$ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/style remotes/origin/master
Git выводит все коммиты в оригинальный репозиторий, но ветки в удаленном репозитории не рассматриваются как локальные. Если мы хотим иметь собственную ветку style, мы должны сами ее создать. Через минуту вы увидите, как это делается.
Как посмотреть ветки в Git
Чтобы вывести список локальных веток используется команда:
git branch
Список удаленных веток
Чтобы показать удаленные (remote) ветки используется ключ -r :
git branch -r
Перед тем, как выполнять данную команду, можно сначала обновить удаленные ветки у себя в репозитории, для этого используется команда:
git fetch
git fetch загружает коммиты, файлы и ссылки из удаленного репозитория. Данная команда выполняется, когда вы хотите посмотреть, что изменилось в удаленном репозитории, что кто-то другой сделал в нем. При этом очень важно, что git fetch не изменяет никаких ваших локальных данных, над которыми вы работаете.
Список всех веток
Для вывода всех веток, локальных и удаленных, используется ключ -a :
git branch -a
Смотрите также:
- Как изменить файлы в старом коммите (не последнем)
- Как добавить все файлы в коммит, кроме одного
- Как создать ветку из предыдущего коммита
- Команда Git stash. Как прятать изменения в Git
- Как показать файлы, которые будут добавлены в текущий коммит
- Как переключиться на ветку
- Как удалить ветку
- Как переименовать ветку
- Как показать текущую ветку
- Как создать новую ветку
Удалённые ветки

это ссылки на состояние веток в ваших удалённых репозиториях.
Это локальные ветки, которые нельзя перемещать. Они двигаются автоматически всякий раз, когда вы осуществляете связь по сети. Удалённые ветки действуют как закладки для напоминания о том, где ветки в удалённых репозиториях находились во время последнего подключения к ним.
Они выглядят как /. Например, если вы хотите посмотреть, как выглядела ветка master на сервере origin во время последнего соединения с ним, проверьте ветку origin/master . Если вы с партнёром работали над одной проблемой, и он выложил ветку feature/53 , у вас может быть своя локальная ветка feature/53 . Но та ветка на сервере будет указывать на коммит в origin/feature/53 . Всё это, возможно, сбивает с толку, поэтому давайте рассмотрим пример.

Скажем, у вас в сети есть свой Git-сервер. Если вы с него что-то склонируете ( Клонировать репозиторий Git ), Git автоматически назовёт его origin , заберёт оттуда все данные, создаст указатель на то, на что там указывает ветка master , и назовёт его локально origin/master .

Git также сделает вам вашу собственную локальную ветку master , которая будет начинаться там же, где и ветка master в origin , так что вам будет с чем работать.

Примечание: origin это не специальное название. Подобно тому, как название ветки master не имеет какого-либо специального значения в Git’е, название origin это тоже просто название. Исходная ветка репозитория называется master по единственной причине, потому, что это название широко используется. Также и origin , это название по умолчанию для удалённой ветки после клонирования. Если вы хотите назвать удалённый репозиторий narnia , вы можете это сделать в диалоге клонирования, и ваша удалённая ветка по умолчанию будет называться narnia/master .
После клонирования история изменений в локальном и удалённом репозитории будет выглядеть следующим образом.

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

Для синхронизации вашей работы выполняется команда Групповая разработка > > Получить из origin . Эта команда ищет, какому репозиторию соответствует origin , извлекает оттуда все данные, которых у вас ещё нет, обновляет ваш локальный репозиторий, и сдвигает указатель origin/master на новую позицию.

Чтобы продемонстрировать то, как будут выглядеть удалённые ветки в ситуации с несколькими удалёнными серверами, предположим, что у вас есть ещё один внутренний Git-сервер, который используется для разработки только одной из ваших команд разработчиков. Вы можете добавить его в качестве нового удалённого репозитория так же, как это было описано в разделе Основы Git. Дайте этому удалённому серверу имя teamone .

Теперь можете выполнить Групповая разработка > > Удаленный репозиторий > > Получить из. > teamone , чтобы извлечь всё, что есть на сервере, и нет у вас. Так как в данный момент на этом сервере есть только часть данных, которые есть на сервере origin , Git не получает никаких данных, но выставляет удалённую ветку с именем teamone/master , которая указывает на тот же коммит, что и ветка master на сервере teamone .