Как в Git продолжать разработку без отправки изменений на удалённый репозиторий?
==================================================================================

 Вначале удалённый и локальный репозиторий совпадают.  
  

Делаю я новую функциональность в локальном репозитории.  

Создал для неё ветку 'Ф1', реализовал полностью эту функциональность, всё готово.  
  

Но отправить изменения (pull request) нет возможности.  

А при этом хочется продолжить разработку и сделать что то ещё из этого состояния (готовой Ф1), сделав для новой функциональности ветку 'Ф2'  
  

Появилась возможность отправить это всё на удалённый репозиторий, пусть простая ситуация удалённый репозиторий не изменился, и важно, что бы в его истории сохранились ветки для каждой функциональности своя (как при использовании ключа --no-ff) , то есть была вот такая картина  
![5c863461530a2665727534.jpeg](https://habrastorage.org/webt/5c/86/34/5c863461530a2665727534.jpeg)  
  

Так вот проблема. Как мне работать локально создавать ветки и сливать изменения и как отправлять изменения что бы это получить?  
  

Вариант 1. После реализации Ф1 я должен влить её в master (делаю это с --no-ff)? (а так можно? если собираешься на удалённый отправлять? картинка на локальном получится, а на удалённом?) Затем из master сделать ветку Ф2 и опять слить с master затем отправить изменения из итоговой ветки master  
  

ИЛИ  
  

Вариант2. После реализации Ф1 я делаю из неё Ф2 из неё Ф3 из неё ....  
![5c8637b407145469226419.jpeg](https://habrastorage.org/webt/5c/86/37/5c8637b407145469226419.jpeg)  

Затем каждую по отдельности отправляю на удалённый репозиторий и локально не сливая с master  

Ещё варианты?  
  

В общем как продолжают разработку без доступа к основному репозиторию? 

 1) Фичу 1 оставить в своем репозитории и не лить ее в мастер локально  

2) Если для Фичи 2 изменения в Фиче 1 не нужны, просто переходишь в мастер, делаешь гит пулл и делаешь бранч для Фичи 2  

2а) Если для Фичи 2 нужны изменения, которые ты сделал в Фиче 1, то после второго шага делаешь gi rebase F1  

3) Перед тем как делать мерж реквест и к первой фиче и ко второй делаешь  

git fetch && git rebase origin/master таким образом ты в ветку подтянешь накопленные в мастере обновления и решишь конфликты если возникнут 

 На момент когда захотелось сделать ф2, ф1 нужна в Мастере? думаю ответив на этот вопрос можно решить как работать. Мастер всегда должен быть в боевом состоянии, не стоит сливать в эту ветку другие ветки, если не готовые сразу отправить в центральную репку и в бой