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)
Переименовать ветку
Чтобы переименовать ветку зайдите в неё, убедитесь, что вы в корне проекта и выполните
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
Создать ветку от другой ветки
Если нужно создать ответвление не от главной ветки, а от какой-то другой
её нужно указать после названия новой ветки.
Например создать ветку child от существующей ветки parent можно следуюущим образом
git checkout -b child parent
Подтянуть удалённую ветку
Допустим, что клонирован репозиторий у которого несколько веток.
Клонирование с GitHub по умолчанию получает ветку main (master)
можно указать и другую ветку
но в обоих случаях после клонирования будет доступна одна ветка.
GitHub использую как собирательное название для все сервисов удаленного хранения репозиториев.
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 и станет активной.
Автор статьи: Андрей Олегович
| Git | |
| Установка | |
| Основы | |
| branch: Ветки | |
| stash | |
| Перейти с HTTPS на SSH | |
| .gitignore | |
| Необходимые Bash команды | |
| Remote | |
| GitHub | |
| GitLab | |
| Ошибки | |
| Git Bash | |
| Работа с API GitHub |