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

Dúvidas sobre o GIT

Algumas dúvidas que não ficaram claras para mim: Qual a diferença entre um merge e um rebase. Nos testes que realizei o resultado final foi idêntico. Quando devo utilizar um ou outro? Ainda não tenho bem a noção de quando se deve realizar um commit e um push para o repositório online? Gostava de ter uma sequência de passos a realizar num cenário simulado.

Por exemplo com 3 branches: master, filho1 e filho2. Em que a equipa de desenvolvimento A está a utilizar o branch filho1 está a implementar uma funcionalidade para o mesmo projecto geral. A equipa B está a usar o branch filho2. O primeiro passo a fazer penso eu é ambas as equipas irem buscar o código mais recente ao master: Para isso fazem: "git chekout filho1" ou "filho2" e depois "git rebase master". Aqui deve ser usado um rebase ou um merge? Depois de ambas as equipas A e B terem o projecto atualizado, ambas as equipas começam a desenvolver e a meio da manha a equipa A tem uma função testada e a funcionar. É suposto aqui essa equipa fazer um commit? E fazer um push para o branch (git push origin filho1)? Quando uma equipa quer fazer commit e push de coisas que vai desenvolvendo deve fazer commit / push para o branch em que está a trabalhar ou para o master? E já agora, quando se faz commit é suposto fazer-se um push de seguida? Entretanto a equipa B tb faz uma função e está a funcionar. Chega o final do dia de trabalho. O que devem fazer os programadores no final de um dia de trabalho? Após vários dias de trabalho no projecto a equipa A completa todos os requisitos da funcionalidade que estava a implementar e ja fez testes com sucesso. Agora deve integrar a nova funcionalidade com o "master", correcto? Para isso deve fazer: "git checkout master" e depois fazer "git rebase filho1" (aqui deve usar o rebase ou o merge)?

São tantas as dúvidas que nem sei como as expor... Eu percebi os comandos explicados no curso. As minhas dúvidas tem mais a ver com o workflow e sobre os timmings de quando realizar determinada ação. E também sobre o merge e o rebase.

Obrigado.

3 respostas

Fala, André.

Então, o merge une todo seu trabalho de um branch com outro.

O rebase reescreve a história de um branch.

Se você fizer alguns testes no https://git-school.github.io/visualizing-git/ vai entender melhor. :-)

Quanto ao fluxo real de trabalho usando GIT, a gente conversa mais sobre isso no segundo curso em estratégias de branch. :-D

Olá Vinicius.

Tudo bem, mas não entendo ao certo o alcance de dizer que o merge une todo seu trabalho de um branch com outro, e o rebase reescreve a história de um branch.

Em que casos é conveniente reescrever a história de um branch ou unir o trabalho num outro branch? No fundo em que situações de deve usar o merge face ao rebase e vice versa. Porque como disse eu fiz testes com ambos e consegui atingir o mesmo objectivo utilizando qualquer um dos dois.

Obrigado.

solução!

André, usar o https://git-school.github.io/visualizing-git/ é realmente a melhor forma de entender.

Você vai fazer merge quando finalizar um trabalho em um branch e quiser unir com um outro branch.

Você vai fazer rebase quando quiser, por exemplo, atualizar seu branch atual baseado em outros branches.

Há muitas situações em que tanto o merge quanto rebase vão te entregar o mesmo resultado final, mas uma linha de commits diferentes, então a equipe vai decidir qual abordagem utilizar. ;-)