checkout do ramo estável remoto
git fetch <remote> <branch>
Seu repositório local agora terá uma cópia somente leitura da ramificação de rastreamento remoto; agora, confira o ramo de rastreamento somente leitura
git checkout origin/<branch_name>
Seu VCS (o que você estiver usando) começará a mostrar mensagens como:
-
HEAD is in a detached state
-
Previous HEAD position was c293198
E o ramo atual como um fragmento hash como a697b40
.
Todos os HEAD desanexados significam que fazer um novo commit e, em seguida, se afastar dele (fazendo check-out de alguma outra coisa), você não fará nenhuma referência ao novo commit.
checkout e criar a nova ramificação "feature" da ramificação de rastreamento remoto
git checkout -b "feature_branch_intended_for_remote"
Neste ponto, qualquer commit será adicionado a essa ramificação totalmente nova - cuja história era o estável original.
Isto significa que você obteve os dados do estábulo remoto (que você não pôde modificar) e em nenhum momento você criou uma cópia de trabalho local do estábulo upstream - que você pode acidentalmente empurrar de volta no upstream.
Então agora você pode agora
- envie seu trabalho para essa nova filial
- empurre de volta para a origem como um ramo completamente novo
git push [--set-upstream | --track | -u] <remote> <feature_branch_intended_for_remote>