Olá Suellen, tudo bem ?
Quando criamos uma branch nova para trabalharmos (ex: git checkout -b work
- cria e já vai para a branch work
) ela foi criada localmente.
Quando queremos enviar o estado dessa branch para o repositório remoto podemos usar o comando git push origin work
. Essa branch automaticamente vai ser enviada com seu estado e o serviço remoto vai criar uma branch com o mesmo nome mantendo esse estado. O problema é que aos fazermos novos commits, toda vez que quisermos enviar as alterações pra essa branch remota precisaremos sempre usar o comando da forma mais verbosa (git push origin work
) informando novamente a branch.
Quando usamos o git push -u origin work
estamos pedindo ao git para - além de enviar o estado da branch local work
para a branch remota work
- também trackear a branch local para a branch remota, assim todas as próximas vezes que quiser enviar as alterações nessa branch para o remoto você só precisa executar git push
, pois as branches estão ligadas.
Isso talvez deva ter sido feito pra não tratar tudo como uma regra 1 pra 1 e dar mais flexibilidade podendo você escolher quando mandar seu estado pra própria branch e quando não.
Sobre o erro em si que você pode receber ao dar apenas git push
na primeira vez dentro de uma nova branch é porque ela só existe localmente, e é preciso demonstrar ao git server do repositório remoto a qual branch você quer enviar o estado. Aí se aplica a regra acima ... você pode usar git push origin nomeDaBranch
(que se não existir no repo remoto ele cria essa branch com esse nome), ou mais prático ainda, se você só for mandar sempre pra mesma branch do remoto, já fazer com o -u
.
Espero ter ajudado no pensamento. Abraço!