Eu sou novo no Git, então fique à vontade para me tratar como um novato.
Nosso fluxo de trabalho é tal. Temos um ramo chamado devque eu posso alcançar origin/dev. Quando fazemos alterações, criamos uma ramificação do dev:
git checkout -b FixForBug origem / dev
Agora eu tenho um ramo chamado FixForBugque está rastreando (acho que é a palavra certa) origin/dev. Assim, se eu fizer git pullisso, trará novas mudanças, das origin/devquais é ótimo. Agora, quando terminei minha correção, levo para um ramo remoto chamado a mesma coisa.
Primeiro, retiro todas as alterações origin/deve refiz:
git pull --rebase
Em seguida, envio as alterações para uma ramificação remota com o mesmo nome:
origem do push do git FixForBug
Agora, há uma ramificação no servidor remoto e posso criar uma solicitação de recebimento para que essa alteração seja aprovada e mesclada novamente à ramificação dev. Eu nunca empurro nada para origin/devmim mesma. Suponho que este é um fluxo de trabalho bastante comum.
A primeira vez que faço um git push, ele funciona bem e cria a ramificação remota. No entanto, se eu pressionar pela segunda vez (digamos que durante a revisão de código, alguém aponte um problema), recebo o seguinte erro:
erro: falha ao enviar algumas referências à dica ' https://github.limeade.info/Limeade/product.git ': as atualizações foram rejeitadas porque a dica do seu ramo atual está atrás da dica: sua contraparte remota. Integre as alterações remotas (por exemplo, dica: 'git pull ...') antes de pressionar novamente. dica: Consulte a 'Nota sobre avanço rápido' em 'git push --help' para obter detalhes.
No entanto, se eu fizer um git status, diz que estou à frente de origin/dev1 commit (o que faz sentido) e se eu seguir a dica e executar git pull, ele diz que tudo está atualizado. Eu acho que isso é porque estou empurrando para um ramo diferente do meu ramo upstream. Eu posso corrigir esse problema executando:
git push -f origin FixForBug
Nesse caso, ele enviará as alterações para a ramificação remota, dizendo (atualização forçada) e tudo parecerá bom na ramificação remota.
Minhas perguntas:
Por que é -fnecessário neste cenário? Geralmente, quando você está forçando algo, é porque você estava fazendo algo errado ou pelo menos contra a prática padrão. Estou bem em fazer isso, ou isso atrapalhará algo no ramo remoto ou criará um aborrecimento para quem tiver que eventualmente mesclar minhas coisas no dev?
git pull origin FixForBugantes de empurrar para isso? Ok, isso faz sentido. Sinta-se livre para adicionar como resposta!
