Git Branch
Ветки (Branches)
Посмотреть список веток, которые видны локально
git branch
andrei/PROJECT-12345_install_from_disk andrei/PROJECT-10000_acceptance_test_automation * master new_feature
Посмотреть какая ветка сейчас активна
git branch | grep \*
* master
Посмотреть список веток, которые есть на удалённом репозитории (GitHub, GitLab, BitBucket…)
git branch -r
alexmo/PROJECT-20034_monitoring andrei/PROJECT-12345_install_from_disk … lester/FARGO-23495_visa_to_beijing * master … zack/PROJECT-20034_monitoring
Посмотреть список всех веток, которые есть локально и на удалённом репозитории
git branch -a
alexmo/PROJECT-20034_monitoring andrei/PROJECT-12345_install_from_disk andrei/PROJECT-10000_acceptance_test_automation … lester/FARGO-23495_visa_to_beijing * master new_feature … zack/PROJECT-20034_monitoring
Посмотреть список веток и последних коммитов в эти ветки
git branch -v
alexmo/PRJCT-200_monitoring f073345ub5 [PROD-200] - adds jix feature andrei/PRJCT-123_autotest 7950xcde09 [PROD-123] - autotest: adds soc test * master 30877153ec [no-issue] - updates dependency list
Прежде чем создавать новую ветку нужно убедиться в том, что в старой нет несохранённых изменений.
git status
On branch master nothing to commit, working tree clean
Также если вы, например, находитесь в master сперва сделайте
git pull
Чтобы новая ветка отпочковалась от самой свежей версии master
Создать новую ветку
Чтобы создать новую ветку выполните
git branch new-branch
Проверить появилась ли она в списке
git branch
… * master new-branch …
git branch | grep new-branch
new-branch
Перейти в новую ветку
git checkout new-branch
Switched to branch 'new-branch'
Вернуться в ветку master
git checkout master
Если Вы сделали в ветке new-branch какие-то изменения, закоммитили из и теперь хотите, добавить эти изменения в ветку master нужно выполнить команду merge
git merge new-branch
Updating f521fc5..fe7276a
Fast-forward
index.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Создать новую ветку и сразу перейти в неё можно одной командой
git checkout -b new-branch-2
Удалить ветку
Удалить локальную ветку
git branch -d branchName
Deleted branch branchName (was 1ce400ce6).
Удалить внешнюю ветку
git push origin --delete remoteBranchName
Удалить несколько веток
Допустим существует несколько веток, которые удовлетворяют какому-то условию, например, начинаются на одно и то же слово
git branch
andrei/add_header andrei/capitalize andrei/capitalize_header_and_ssh andrei/capitalize_names andrei/update_header * main
Удалить все ветки кроме main в этом случае можно командой
git branch -d $(git branch | grep andrei)
Удалить ветку по шаблону
Удалить все ветки, которые начинаются на backup можно командой
git branch -d $(git branch | grep backup
Или
git branch --list 'backup*' --format='%(refname:short)' | xargs -r git branch -D
Чтобы переименовать ветку зайдите в неё, убедитесь, что вы в корне проекта и выполните
git branch -m newName
Вместо newName подставьте нужное вам имя.
Если ваша локальная ветка отстала от удалённого репозитория и нужно обновить - выполните
git pull.
git pull origin ИМЯ_ВЕТКИ
Это может произойти, если вы создали ветку на одном компьютере, сделали push в удалённый
репозиторий (github, gitlab…) затем перешли в эту ветку на втором компьютере
сделали push оттуда и вернулись на первый компьютер. В локальной ветке последних
коммитов нет, поэтому нужно скачать их следующей командой.
git pull origin topic/qa/HH-2398_update_malaga_hotels
From gitlab.heihei.com:HEI/HEI
* branch topic/qa/HH-2398_update_malaga_hotels -> FETCH_HEAD
Updating 095a284bd..43cd9724d
Fast-forward
src/countries/spain/malaga/index.php | 26 ++++++++++++++++++++++----
src/countries/spain/costa-del-sol/index.php | 24 ++++++++++++++++++++----
2 files changed, 42 insertions(+), 8 deletions(-)
Чтобы клонировать только определённую ветку нужно указать её с помощью опции -b
git clone -b BranchName git@github.com:CompanyName/RepoName.git
Если нужно создать ответвление не от главной ветки, а от какой-то другой
её нужно указать после названия новой ветки.
git checkout -b child parent
Допустим, что клонирован репозиторий у которого несколько веток.
git branch
main
Если создать локально другие ветки, они тоже будут видны. Но ветки, созданные коллегами на других машинах, даже если они запушены в github доступны не будут.
git branch -r
origin/PROJECT-123456-topic
origin/PROJECT-123457-topic
…
Чтобы сделать такую ветку доступной локально нужно выполнить
git checkout -b local_name origin/remote_name
local_name может быть любым, но обычно делают таким же как и на github
git checkout -b PROJECT-123456-topic origin/PROJECT-123456-topic
Ветка PROJECT-123456-topic будет скачана с GitHub и станет активной.
Автор статьи: Андрей Олегович
Переименовать ветку
Обновить ветку из удалённого репозитория
Клонировать только определённую ветку
Создать ветку от другой ветки
Например создать ветку child от существующей ветки parent можно следуюущим образом
Подтянуть удалённую ветку
Клонирование с GitHub по умолчанию получает ветку main (master)
можно указать и другую ветку
но в обоих случаях после клонирования будет доступна одна ветка.
GitHub использую как собирательное название для все сервисов удаленного хранения репозиториев.
Их можно увидеть командой
Git Установка Основы branch: Ветки stash Перейти с HTTPS на SSH .gitignore Необходимые Bash команды Remote GitHub GitLab Ошибки Git Bash Работа с API GitHub