Git | Branches e Ponteiros
Essa é a terceira publicação de uma série onde compartilho como as coisas acontecem nos bastidores do Git.
No Git quando você clona o repositório remoto para seu ambiente de desenvolvimento local automaticamente esse ambiente irá apontar para a branch principal, master.
Ao iniciar seus trabalhos é aconselhável que se crie uma branch apartada para sua feature, essa nova branch será uma cópia da branch a partir da qual você a criou e considerando o estado do último commit realizado.
Pense que no git branches são ponteiros, ponteiros para uma série de commits. Ao criar uma branch você passa a ter um ponteiro para um determinado commit, portanto ao realizar um novo commit você terá um novo ponteiro e o HEAD, que é o estado atual do seu repositório local, apontará para a branch e commit nos quais você está no momento, para auxiliar a compreensão considere que acabou de clonar um repositório remoto e o HEAD está apontando para a branch principal:
Ao executar git checkout -b <nome da branch> o HEAD passará a apontar para a nova branch e último commit realizado na branch a partir da qual esta última foi criada:
No workflow local do Git as áreas Working Directory e Staging Area não se relacionam às branches, isso passa a ser considerado após o git commit.
Até então estamos trabalhando localmente, caso executemos um git push nessa nova branch receberemos um erro similar a esse:
Isso ocorre, pois, o seu repositório local não possui uma branch com o mesmo nome (upstream) no repositório remoto com a qual possa se ligar.
Conforme sugerido no console, podemos executar git push — set-upstream origin minha-feature, e empurrar as alterações para o repositório remoto. Isso fará com que a branch minha-feature seja criada no Repositório Remoto e a ligará à branch com mesmo no repositório local. Ao acessar o repositório remoto a nova branch estará disponível lá para os demais.
Referência: https://dev.to/unseenwizzard/learn-git-concepts-not-commands-4gjc