Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Командная работа с topic-ветками в Git

Только изучаю Git. В голове каша. Не совсем понимаю как командно работать с тематическими/короткоживущим ветками и при этом не превратить проект и репозиторий в хаос.
Подскажите, верная эта схема или нет? На сервере 2 ветки: master, develop. Все работают с develop. Допустим, какому-то сотруднику нужно создать меню.
Создаёт новую ветку: git checkout -b feature-menu Пушит её на сервер: git push -u origin feature-menu Работает, делает коммиты, пуллит чужие и пушит свои изменения Кто-то другой делает git checkout -b feature-menu origin/feature-menu и тоже что-то правит Когда работа закончена, сотрудник сливает ветку: git checkout develop; git merge feature-menu; Разрешает конфликты Делает git pull и git push develop-ветки Удаляет ветку локально и удалённо git branch -D feature-menu; git push origin :feature-menu; Готово
Доп. вопрос: После того, как сотрудник1 слил и удалил ненужную ветку (пункт 7), у сотрудника2, который тоже работал с этой веткой, после пулла она всё равно локально останется? Нельзя сделать так, что после того как ветка отработала и была удалена с сервера больше у сотрудников она не появлялась нигде. Или это не нужно?
Доп. вопрос 2: Если сотрудник работает над веткой один. Принято ли её пушить на сервер или сливать локально и пушить уже develop?


Ответ

Схема выглядит правдоподобно. Единственное, что пушить свежосозданную ветку на сервер сразу не обязательно, можно и потом. Удалять ветку лучше так git branch -d feature-menu. -D удалит ветку в любом случае, а -d только если ветка была замерждена.
Доп. вопрос: После того, как сотрудник1 слил и удалил ненужную ветку (пункт 7), у сотрудника2, который тоже работал с этой веткой, после пулла она всё равно локально останется?
да, локальная ветка никуда не пропадет. Но он может сделать git pull --prune - тогда будет удалена.
Нельзя сделать так, что после того как ветка отработала и была удалена с сервера больше у сотрудников она не появлялась нигде. Или это не нужно?
Если сотрудник не сделает pull --prune, то она будет у него жить дальше. Но это его личное дело.
Доп. вопрос 2: Если сотрудник работает над веткой один. Принято ли её пушить на сервер или сливать локально и пушить уже develop?
Можно не пушить. Это его личное дело. Но если он вдруг заболеет или его компьютер решит сходить в ремонт, может быть очень неприятно. Поэтому, если это свои маленькие эксперименты, то обычно не пушат. Если это код, который решает конкретную задачу (которая есть в jira или чему то подобном), то лучше пушить.

Комментариев нет:

Отправить комментарий