Задать вопрос
@embiid

Как сделать merge в ветку git-flow?

Вкратце расскажу ситуацию:

1 - Есть master -> README.md;
2 - Создал в репозитории ветку developer
3 - От developer создал в ветке feature -> feature_some1

Проблема:
1) На gitlab вижу что у меня есть master и feature/feature_some1 (НО! нет developer, получается, что я не запушил developer?!)[Через git branch вижу что есть developer, тоесть он локально?]

2) Теперь хотел сделать merge feature_some1 к developer
(Получаю ошибку working tree contains unstaged changes. aborting. git flow)
[Я так понимаю, что он не хочет merge, потому что локально есть файлы незакомиченные?]

Вопрос:
1) Как мне можно запушить deloper на gitlab/github ?
2) Как мне у feature создать новую ветку feature_some2 ?
(Можно ли так же делать, что бы в feature были и feature_some1 и feature_some2 ?)
[то есть, сейчас локально так:
developer -> feature
feature -> feature_some1
хочу -> feature_some2
]
  • Вопрос задан
  • 185 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
1) По умолчанию, git push отправляет на сервер только одну ветку — текущую.
Чтобы отправить ветку developer, сначала переключитесь на неё.
git checkout developer
git push -u

Либо можно не переключаться, но явно указать, что и куда отправить
git push -u origin developer
Эта команда говорит: возьми ветку developer и отправь в репозиторий origin.
Флаг -u нужен чтобы сразу связать локальные ветки с создаваемыми удалёнными.

Хотя можно сказать гиту, чтобы он отправил сразу все локальные ветки
% git push -u --all 
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/.../repo.git
 * [new branch]      developer -> developer
Ветка «developer» отслеживает внешнюю ветку «developer» из «origin».
Ветка «feature/feature_some1» отслеживает внешнюю ветку «feature/feature_some1» из «origin».
Ветка «feature/feature_some2» отслеживает внешнюю ветку «feature/feature_some2» из «origin».
Ветка «master» отслеживает внешнюю ветку «master» из «origin».

Но если у вас есть локальная ветка, которую вы не хотите светить на сервере, то флаг -all не подойдет ))

2) Синтаксис названия feature/feature_some1 это не две ветки, feature и вложенная feature_some1
Это всё равно одна ветка. Но в графических клиентах такие ветки отображаются как вложенные, для удобства.
Создав вторую ветку с именем feature/feature_some2 получим такую картинку

604841b7bfdc2368381419.png
Но никакой ветки feature не существует.
% git branch    
  developer
  feature/feature_some1
* feature/feature_some2
  master


3) Как сделать merge в ветку developer?
Перед слиянием убедиться, что рабочая копия не имеет незакоммиченных изменений.
Либо дропните незафиксированные правки либо создайте коммит с ними.
Иначе git не знает что с ними делать и выдал вам ошибку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
А нужен ли вам git-flow?
Насколько я понимаю, опыта в git у вас почти нет, но вы собираетесь применить сразу энтерпрайз-решение. git-flow подразумевает использование релизов. В связи с этим и строится набор веток и их взаимодействие. В подавляющем большинстве случаев релизы не нужны, а значит и процесс будет другим.
Упрощенный процесс хорошо расписал опытный человек здесь: https://qna.habr.com/answer?answer_id=1552111#answ...
Это работает даже если у вас в команде несколько человек, не говоря уже об одном разработчике. Проверено на себе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽