Lara, as atualizações foram rejeitadas porque provavelmente o seu branch local estava desatualizado ou não sincronizado em relação ao branch do repositório remoto que era o "alvo" do seu git push
.
Por padrão, o comando git push
se recusa a atualizar um branch remoto cujo histórico não esteja rigorosamente contido no branch local que está tentando sobrescrevê-lo. Uma outra maneira (mais amigável) de dizer: o branch remoto não pode conter em seu histórico (em seu log) qualquer commit que não esteja presente no histórico do branch local, caso contrário, o git push não funcionará.
Nesse caso, você primeiramente precisaria trazer as mudanças do branch remoto para o seu branch local e só então fazer o merge. Em outras palavras, você teria que executar um git pull para obter e aplicar as mudanças do seu branch remoto no seu branch local correspondente e, se tudo ocorrer bem, proceder a uma nova tentativa de execução do git push
.
O Otávio Prado já explicou bem que a flag -u
serve para vincular um branch local a um branch remoto.
A respeito da flag -f
: se ela for usada, aquela restrição mencionada nos segundo e terceiro parágrafos deixa de ser verificada; assim, o sistema Git passa a permitir que o git push
execute irrestritamente, e que o branch local sobrescreva o branch remoto – o que pode causar a perda de commits do branch remoto. Isso seria especialmente problemático em uma situação de trabalho colaborativo, pois poderia deletar as mudanças, os commits, eventualmente enviados por outra pessoa para o servidor (por isso, há a advertência para se usar o -f
com muito cuidado).