vão todos os arquivos do meu repositório local e não apenas os que eu selecionei no git add
Mas a ideia do git push
é justamente essa: enviar para o repositório remoto todas as alterações do seu branch local que ainda não estão lá.
Aqui tem uma explicação bem didática, e a ideia básica é essa mesmo. Ao fazer push
, o "seu" Git (seu repositório local) está dizendo: "Ei remote, fiz essas alterações no meu branch, vou te mandar todas que vc ainda não tem".
No git add
vc escolhe as alterações que vão no próximo commit. Se o push
mandou mais coisas, é porque essas coisas a mais não estavam no repositório remoto. Um push
não vai mandar só o último commit, vai mandar tudo que ainda não está no remoto.
Dito isso, por que vc precisa trocar o remoto? Pergunto isso porque dá para ter vários repositórios remotos configurados (e dá até pra fazer push
em mais de um ao mesmo tempo), e vc pode dar o nome que quiser pra eles ("origin" é apenas o nome default quando vc clona um repositório, mas nada impede que vc dê outros nomes para outros remotos).
E aí na hora do push
vc escolhe para qual precisa mandar, bastando fazer git push <nome-do-remote> <nome-do-branch>
.
Agora, se vc só quer uma parte dos arquivos em outro repositório, aí não dá mesmo. Todos os repositórios sempre terão todo o histórico, e qualquer tentativa de sincronizar (push
, pull
, fetch
) sempre vai enviar/receber tudo que estiver faltando.