Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

erro para sincronizar dados de outro computador

Fiz um repositorio no computador do meu trabalho, porem não consigo enviar arquivos de outros computadores, apare o erro:

Eduardo@DESKTOP-JDGL7TF MINGW64 ~/Desktop/projeto/curso-css-master (master) $ git push -u origin master To https://github.com/edurezende10/curso-css.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://github.com/edurezende10/curso-css.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Neste caso, preciso de realizar mais alguma configuração?

7 respostas

Oi Edu, tudo bem? Acho que o problema é que você não fez um pull antes. Lembre-se, você não pode enviar novas alterações até receber todas que estão no servidor.

Faça, por boa prática, sempre um pull antes de enviar um push. Ok? Testa isso pra mim?

Mas se eu fizer um pull, não vai sobrescrever as alterações que já fiz?

Não necessariamente. Talvez você tenha conflitos por que alterou um arquivo localmente que também tem uma alteração no seu repositório remoto. Neste caso o Git vai reclamar e você vai precisa resolver o conflito e fazer talvez um merge.

Depois disso vai fazer um push.

Então, isso que eu não entendi, vou explicar com mais detalhes o que tentei fazer:

Estava com esse mesmo projeto em 3 computares, porem em estagios diferentes

pc 1= 60% do projeto concluido pc2=70% do projeto concluido pc3=90% do projeto concluido.

Quando eu adicionei no github, usei o pc2 e consegui sincronizar normal. Quando fui tentar mandar pelo pc 3, para subscrever algumas coisas e adicionar novas alterações nos documentos, deu aquele erro. Se eu desse um git pull, ele iria voltar para os 70% do projeto ?

Então, foi justamente isso que eu quis dizer. Ele vai detectar as mudanças e tentar fazer um merge automático. Se houver conflitos você vai ver as mensagens pedindo pra resolver os conflitos. Se não houver conflitos, muito provavelmente você vai continuar nos seus 90%.

Por segurança eu copiaria os arquivos, mas isso é coisa minha mesmo.

Certo, como tava precisando muito enviar os arquivos para o git naquele dia, acabei usando o -- force , o que imagino que não deve ser uma boa pratica.

Agora acho que entendi o que tenho que fazer quando tiver esse conflito novamente.

Uma outra dúvida, para esse problema, se eu criasse uma outra branch para esse projeto (desenvolvimento). Voltasse para branch master e fizesse o git pull e dps um rebase para branch desenvolvimento e depois fizesse um push, funcionaria?

solução!

Me parece que sim, mas você precisa fazer a branch antes de alterar qualquer coisa, assim a master fica no mesmo ponto do master no repositório online e no offline você faz update de uma branch na outra e depois atualiza o online.

É uma boa estratégia. Faz sentido pra mim.

No geral, as boas práticas dizem duas coisas sobre isso: sempre trabalhe com branches e use a master apenas parar merges. Use o -force somente em caso de desespero e emergência (ou nunca use).