O comando git push
leva dois argumentos:
- Um nome remoto, por exemplo,
origin
- Um nome de ramo, por exemplo,
main
Por exemplo:
git push <REMOTENAME> <BRANCHNAME>
Como exemplo, normalmente executa-se git push origin main
para empurrar as suas alterações locais para o seu repositório online.
Renomear ramos
Para renomear um ramo, você usaria o mesmo comando git push
, mas você acrescentaria mais argumentos: o nome do novo ramo. Por exemplo:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
Isto empurra o LOCALBRANCHNAME
para o seu REMOTENAME
, mas é renomeado para REMOTEBRANCHNAME
.
Lidando com erros de “não aceleração”
Se a sua cópia local de um repositório estiver dessincronizada com, ou “atrás”, do repositório a montante para o qual está a empurrar, receberá uma mensagem dizendo non-fast-forward updates were rejected
.Isto significa que deve recuperar, ou “buscar”, as alterações a montante, antes de poder empurrar as alterações locais.
Para mais informações sobre este erro, ver “Lidar com erros que não sejam de avanço rápido”.”
Pushing tags
Por defeito, e sem parâmetros adicionais, git push
envia todos os ramos correspondentes que têm os mesmos nomes que os ramos remotos.
Para carregar numa única etiqueta, pode emitir o mesmo comando que carregar num ramo:
git push <REMOTENAME> <TAGNAME>
Para carregar em todas as suas etiquetas, pode digitar o comando:
git push <REMOTENAME> --tags
Apagar um ramo remoto ou tag
A sintaxe para apagar um ramo é um pouco arcano à primeira vista:
git push <REMOTENAME> :<BRANCHNAME>
Notem que existe um espaço antes dos dois pontos. O comando assemelha-se aos mesmos passos que se daria para renomear um ramo. No entanto, aqui, está a dizer a Git para não empurrar nada para BRANCHNAME
em REMOTENAME
. Por causa disto, git push
elimina o ramo no repositório remoto.
Remotos e garfos
Você já deve saber que pode “garfo” repositórios no GitHub.
Quando você clona um repositório seu, você fornece-lhe um URL remoto que diz ao Git onde ir buscar e empurrar actualizações. Se quiseres colaborar com o repositório original, adicionarias um novo URL remoto, normalmente chamado upstream
, para o teu clone local de Git:
git remote add upstream <THEIR_REMOTE_URL>
Agora, pode ir buscar actualizações e ramos ao seu garfo:
git fetch upstream# Grab the upstream remote's branches> remote: Counting objects: 75, done.> remote: Compressing objects: 100% (53/53), done.> remote: Total 62 (delta 27), reused 44 (delta 9)> Unpacking objects: 100% (62/62), done.> From https://github.com/octocat/repo> * main -> upstream/main
Quando terminar de fazer alterações locais, pode empurrar a sua filial local para GitHuband iniciar um pedido de puxar.
Para mais informações sobre como trabalhar com garfos, ver “Sincronização de um garfo”.
Further reading
- O capítulo “Remotas” do livro “Pro Git”
-
git remote
página man - “Git cheatsheet”
- “Git workflows”
- “Git Handbook”