Skip to main content

Ветвления

Переход по веткам возможен при полном commit текущей рабочей версии

Команда Доп. параметры Описание
git branch   

список локальных веток


-a

список удаленных (в смысле на сервере git) веток


<name>

добавление ветки


-d hotfix 

Удаление ненужной ветки


--merged

--no-merged 

список слитых веток

список не слитых


--move bad-branch-name corrected-branch-name 

переименование

git checkout  <name>

·         переключение на ветку

  -b <name> создание ветки и переключение на нее
git push --set-upstream origin corrected-branch-name сохранение переименования

origin --delete master удаление ветки на удаленном сервере 
git log --oneline --decorate --graph --all 
очень важная команда

Объединение веток

Команда Описание
git checkout master Переключение в ту ветку, которую нужно обновить
git merge hotfix1 объединение текущей ветки с веткой hostfix1

В файлах, содержащих разную информацию, появятся строки, показывающие различия. Нужно удалить все различия, вставив новый (или куски старого) текст, добавить файл (git add…) и закоммитить. После отработки всех ошибок будет слито в новый commit

Перебазирование

git checkout experiment
git rebase master
git checkout master
git merge experiment

В случае конфликта исправляем и добавляем файл git add (без коммита!), затем git rebase --continue

Перебазирование в случае 3 веток, ответвление 3 было от 2 ветки, но в основную ветку нужно добавить изменения 3 ветки, вторую пока что не трогать

git rebase --onto master server client

Пример.

Работа с ветвлениями в VSC

Текущий commit полностью соответствует commit на сервере. Думаю, что через интерфейс VSC было бы правильнее, но мне пока что проще через консоль. 

cd D:\projects\projects_ogrinizer
D:\projects\projects_ogrinizer>git checkout -b upd-git-1
Switched to a new branch 'upd-git-1'

После этого в VSC в разделе git изменилось имя ветки на upd-git-1, все коммиты будут идти в нее.

 git-checkout-1.JPG

Клонируем репозиторий на тестовый сервер, смотрим список веток. И не видим ветку upd-git-1, возможно потому что в ней нет ни одного коммита. 

git branch
* master

В VSC сохраняем изменения. Появляется сообщение об отсутствии удаленной ветки.

 git-checkout-2.JPG

На gitverse в разделе Ветки появляется имя ветки и отображается commit. Но git branch на тестовом сервере все равно не показывает дополнительные ветки. Смотрим удаленные ветки и переключаемся на нее. Теперь git branch выдает состояние нужной ветки.

git branch
* master

git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/upd-git-1

sergey@jenkins:~/projects_ogrinizer$ git checkout remotes/origin/upd-git-1

sergey@jenkins:~/projects_ogrinizer$ git branch
* (HEAD отделён на origin/upd-git-1)
  master

Чтобы связать локальную ветку и удаленную ветку, сначала локальную ветку нужно создать. Поэтому на тестовом сервере создаем ветку (можно с другим именем, но проще одинаковые имена) 

git checkout -b upd-git-1
Switched to a new branch 'upd-git-1'

Теперь связываем ветки

git branch --set-upstream-to remotes/origin/upd-git-1

Теперь работают pull 

git pull
Обновление 86a0c85..d813524
Fast-forward
 compose-files/Dockerhub/docker-compose.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)