O que são os parents apresentados ao realizar um merge via interface gráfica?
O que são os parents apresentados ao realizar um merge via interface gráfica?
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?
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.