Работа с Git ветками
Основные команды для работы с ветками:
Создание
git checkout -b имя - создание ветки из текущего коммита c переходом в нее
git branch имя - создание ветки из текущего коммита
git push репозиторий ветка - создание серверной ветки на основе локальной
git push репозиторий имя_локальной:имя_серверной - то же, но с другим именем на сервере
git fetch репозиторий; затем git checkout -b имя_локальной репозиторий/имя_серверной - создание локальной ветки на основе серверной либо, если с тем же названием как и на сервере git checkout --track репозиторий/ветка
Отправка данных в серверную ветку
git push - если ветка является веткой слежения с тем же имеем, что и серверная
git push репозиторий имя_локальной - если одноименные ветки
git push репозиторий имя_локальной:имя_серверной - в противном случае
Объединение с другой веткой
с локальной
с серверной
git fetch репозиторий а затем git merge - если ветка является веткой слежения с тем же имеем, что и серверная git merge репозиторий/имя - в общем случае
git pull - если ветка является веткой слежения с тем же имеем, что и серверная git pull репозиторий имя - в общем случае
Создание из текущей ветки, ветки слежения
git branch -u репозиторий/ветка
Удаление
git branch -d имя - локальной ветки
git push репозиторий --delete ветка - серверной ветки
Информация
git branch - отобразить все ветки с пометкой текущей
git branch -v - отобразить все ветки с последними коммитами
git branch -vv - отобразить все ветки и их аналоги на сервере
Теперь продемонстрируем работу команд на практике:
Создадим первый проект и настроим Git:
git init git remote add test https://github.com/dtanalytic/test.git
Создадим файл hello.py с таким содержанием:
Добавим файл в список слежения и закоммитимся:
git add hello.py git commit -m hello_from_master
git push test master
Теперь создаем другой проект, в котором будем работать с этим же репозиторием. Для этого клонируем существующий репозиторий в новой папке:
git clone https://github.com/dtanalytic/test.git proj2
Переименуем удаленный репозиторий:
git remote rename origin test
Вернемся к первому проекту и создадим ветку:
git branch branch1
git checkout branch1
git commit -am branch1
Затем вернемся в ветку master, внесем изменения и сделаем коммит:
git checkout master git commit -am hello_master_branch1
Перейдем на branch1 и объединим ее c master:
git checkout branch1 git merge master
Разрешаем конфликт и коммитимся:
git add hello.py git commit -m get_hello_branch1
Отправляем эту ветку на сервер:
git push test branch1:br1
Теперь возвращаемся ко второму проекту и создаем локальную ветку, следящую за br1:
git fetch test git checkout --track test/br1
Теперь изменим файл, закоммитимся и отправим изменения на удаленную ветку:
git commit -am hello_proj2 git push
Перейдем в первый проект, скачаем изменения из удаленной ветки:
git fetch test git merge test/br1
Внесем дополнительные изменения, закоммитимся и отправим данные на сервер:
git push test branch1:br1
Теперь перейдем во второй проект, удалим серверную и локальную ветку br1:
git push test --delete br1
git branch -d br1 или git branch -D br1
Отмечу, что команды не раскрытые в данной статье упоминались ранее.