git puxa conflitos ao puxar um ramo não atual

0

Eu tenho um problema ao manipular git pull. Considere que eu tenho 2 filiais no meu repositório remoto (origem): A e B.

O ramo B remoto está à frente do ramo B local por 1 commit.

Esta confirmação adicional (no ramo B remoto) apenas adiciona um novo arquivo, digamos "newfile".

Na minha filial local A, eu tenho um arquivo "newfile" e seu conteúdo é diferente do da ramificação B remota.

Em seguida, executo este comando:

git checkout A
git pull origin B:B

Eu posso ver o seguinte comportamento: o ramo B é atualizado como eu esperava. B foi encaminhado rapidamente e contém "newfile". Mas também tenho um conflito no "newfile". e no meu diretório atual, o arquivo "newfile" contém os marcadores de conflitos.

Por que existe um conflito enquanto a mesclagem já foi feita?

Obrigado.

    
por nuggets 02.01.2015 / 16:31

2 respostas

0

Acho que entendi errado a semântica do git pull. Eu pensei que:

git pull origin B:B

significava:

fetch the remote B 
         + 
merge the remote B into the local B

Eu percebo que isso significa:

fetch the remote B and updates (if fast-forward is possible)  the local B
             +
merge the remote B into the local branch

Na verdade, git pull sempre fará sua mesclagem na ramificação local, independentemente do refspec.

Em outras palavras, pull = fetch + merge. A atualização da ramificação B local é feita por "fetch" e o conflito é gerado pela seguinte operação de mesclagem (na ramificação local).

    
por 02.01.2015 / 19:06
0

Quando você faz um pull, (por padrão) ele obtém tudo o que pode sem sobrescrever quaisquer alterações feitas por você. Qualquer coisa que não pudesse ter porque teria que modificar sua edição é considerado um conflito. Conflitos precisam ser resolvidos manualmente ou você pode desfazer suas alterações e fazer outro pull. Depois de concluir sua mesclagem, você pode fazer um push para confirmar sua alteração.

Este é o comportamento padrão porque pense em como isso pode ser ruim se não fizer isso - suas alterações podem ser levadas por uma atração sem a sua permissão.

    
por 02.01.2015 / 18:17

Tags