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

Duvida com Merges

O que são os parents apresentados ao realizar um merge via interface gráfica?

4 respostas

Olá Ana,

quando fazemos um merge, no fundo, estamos gerando um novo commit de merge. Todo novo commit feito no git tem um commit anterior de onde ele partiu e o novo commit guarda as mudanças que foram feitas. O parent nada mais é do que o commit anterior de onde partiu este novo commit. Neste link tem um exemplo em que o usuário selecionou o commit Improve test of submodule name sorting e ele mostra que o parent é o commit Cleanups.

Olá Lucas,

Entendi.

Mas, supomos que eu tenha uma master e a partir dela criei 2 branches para executar minhas tarefas, por exemplo:

Master-> B1 (Tarefa1)

Master-> B2 (Tarefa2)

Na tarefa1 eu fiz a inclusão de uma linha no index.html, fiz um commit, um push e logo em seguida fiz merge da minha B1 com a Master para retornar as informações para origin.

No dia seguinte eu fiz uma alteração relacionada a tarefa2, realizei uma alteração em um arquivo.css e alterei uma imagem do meu projeto, fiz o commit e o push, e em seguida fui realizar o merge com a master, realizei o pull e o merge da B2 com ela, porém ao final do merge fui notificada que o index.html estava como parent do meu commit e no log do merge ele informa que o arquivo index.html está modificado.

O que eu posso entender com isso?

solução!

Olá Ana,

não sei se entendi completamente a sua dúvida, mas vamos lá. Quando surge um commit de merge, ele no fundo tem dois parents , pois está juntando as alterações que foram feitas em dois estados/branches diferentes. Naquela imagem que eu mandei antes, você pode notar isso no commit Merge pull request #2208 que juntava a branch do commit In-memory packing backend com a do Merge pull request #2226.

No seu exemplo, você tinha a master cujo último commit era a alteração no index.html e a branch tarefa2 que o último commit era a alteração no arquivo.css e da imagem, mas ela não tinha a alteração no index.html. O commit de merge que surgiu vai servir para juntar estas alterações e apontar eventuais conflitos que surgiram neste processo. Neste caso, como foram alterados arquivos distintos, não deveria ter nenhum tipo de conflito. Assim, o commit de merge serviria apenas para juntar as alterações que existiam no index.html, arquivo.css e imagem que vieram da master e tarefa2.

Obrigada Lucas. Me ajudou muito.