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 получим такую картинку
Но никакой ветки
feature не существует.
% git branch
developer
feature/feature_some1
* feature/feature_some2
master
3) Как сделать merge в ветку developer?
Перед слиянием убедиться, что рабочая копия не имеет незакоммиченных изменений.
Либо дропните незафиксированные правки либо создайте коммит с ними.
Иначе git не знает что с ними делать и выдал вам ошибку.