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

Git merge - Dúvida pequena

Boa noite pessoal! Estou com uma dúvida pequena.. É que eu criei um diretorio no meu pc, e um diretorio remoto dai interliguei os dois com o git remote e depois comecei o meu projeto com o git init.. daí fiz alguns testes com o push e deu tudo certo, daí depois resolvi criar uma branch.. criei e ai comecei a simular umas alterações na minha ide e depois ia ver o status, adiciona e fazia o commit.. e depois mudava de branch para fazer o merge.. mas vi que no GITHUB ele acrescentava tudo, ate mesmo o da outra branch, mas a outra branch não está aparecendo la naquele select onde constam as branchs.. o master faz o merge e puxa tudo e acrescenta no github mas so tem esse detalhe de o branch criado (poulain) não estar aparecendo no select!

Alguem seria por que? E outra coisa.. o pull eu poderia utilizar nesses exemplos que fiz como? ele seria para atualizar? mas nao senti necessidade disso ainda por que? eu fiz a alteracao na branch que criei nova.. e depois mudei a branch para o master fazer o merge.

obrigada!

7 respostas

Oi Taina, para vc mandar sua branch local para o lugar remoto, vc precisa entrar na sua branch e fazer git push origin nomeDaSuaBranch

oi alberto! mas qual a diferenca de eu fazer isso que voce falou e de eu ir na mastar, fazer um merge dessa branch e depois fazer o push ?

Pq aí vc ta pushando a master, não a outra branch.Os commits já estão mergeados na master.

como assim? :S

solução!

Vc veio para a master e fez o merge da outra branch. O git pegou os commits da outra branch e juntou com os da master.. Depois vc foi e fez o push da master, não da outra branch. Agora vc tem todos os commits que estavam na master + os commits que estava na outra branch, é isso que vc está pushando.

Se vc tivesse permanecido na outra branch e tivesse dado push de lá, você teria pushado apenas os commits daquela branch e o repositório remoto, no caso o github, teria criado a branch remota para vc.

perfeito!

:)

muito obrigada pela ajuda alberto!! voce é o cara!!

Eu escrevi um textão e depois vi que o Alberto respondeu. Enfim, vou deixar aqui embaixo, de repente te ajuda ou ajuda outra pessoa.


Oi Taina.

Você entendeu o conceito de branches? Pensa que na branch master está todo o sistema que está em produção e funcionando atualmente. Quando surgem novas implementações, nós precisamos nos basear na master (que é o sistema completo atual) para adicionar essas implementações, porém não queremos alterar nada na master ainda, pois precisamos testar bem o que implementarmos.

Partindo do que eu disse, imagine que chegasse pra você uma solicitação para adicionar a funcionalidade de pagamento via PayPal no site de e-commerce que você dá suporte. Você poderia criar uma branch baseada na master. Para isso, uma das formas é executar o seguinte comando (precisa estar na master para o Git se basear nela):

git checkout -b feature-paypal

Estando na master e executando esse comando, o Git criará uma branch nova de nome feature-paypal, exatamente igual à branch master que está no repositório.

Até aí tudo bem, acho que estava claro pra você já. Agora vamos para as suas dúvidas.

Não sei se você já sabe disso, mas ao criar a branch com o comando acima (ou com git branch), você cria a branch localmente apenas. Se eu quiser, por exemplo, jogar ela no repositório para que outras pessoas vejam, eu preciso executar esse comando:

git push origin feature-paypal

Agora pense o seguinte. Sua branch feature-paypal está igual a master, mas isso porque você acabou de criá-la. A partir desse momento você começaria a fazer as alterações necessárias no seu sistema para implementar o pagamento via PayPal. Durante todo o desenvolvimento, você vai registrando o seu avanço através dos seus commits e pushes. Imagine que quando você concluir essa implementação, precisa testar isso em um servidor de homologação. Antes de gerar os pacotes dessa sua versão, você precisar dar um pull da master na sua branch:

git pull origin master

Isso vai fazer com que o Git atualize a branch que você está com o conteúdo da branch que vem depois de origin no comando, que no caso é a master. Se você não enxergar o motivo disso, pense que a ideia do versionamento é justamente para ajudar equipes a trabalharem em conjunto. Alguém pode ter atualizado a master (push na master) depois que você criou sua branch com base nela. Se você não atualizar a sua branch constantemente com a master, corre o risco de depois subir alguma alteração e acabar matando alterações de outros que tinham dado push na master, porém você não atualizou a sua branch.

Se você der commit e push direto na master, é extremamente crítico, pois qualquer erro você precisa ficar revertendo, ao invés de ter a possibilidade de excluir a branch e criar uma nova com base na master. Sem contar que se mais de uma pessoa trabalhar na mesma branch, não faz sentido, pois ficaria uma confusão para testar, pois sempre todos precisariam ficar atualizando (pull) a branch local com as alterações dos outros para poder dar push (lembrando que para dar push na sua branch remota, a sua local tem que estar sincronizada com a remota).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software