Estratégias de mesclagem do Git: espaços fazem com que o padrão não mostre nenhum conflito e traga resultados inesperados

Depois de muitos testes, obtive este cenário de teste simples:

a --> b --> c --   (master)
 \              \
  --> d --> b' --> e   (branch)

Onde:

b' é uma escolha de cerejabe é umfundir demaster.

b' foi feito depoisc ec tem modificações nos mesmos arquivosb (d provavelmente não importa).

e pode facilmente parecer muito inesperado.

Vamos dizer que todos eles estão lidando com o mesmo arquivo "foobar.txt". É assim que o arquivo aparece em cada commit:

// ----------- a
foo

delme

bar

// ----------- b
foo

delme

new

bar

// ----------- c
foo

new

bar

// ----------- b'
foo

delme

new

bar

// ------------ e
foo

new

new

bar

Agora, isso foi do meu breve teste agora, com esteexato configuração.

Se você remover todosespaços lá, não existe tal problema. Mesclar apenas acusará um conflito, como eu esperaria. Mas eu não acho que usar qualquer configuração -X para espaços é o que estamos procurando aqui ... Ou é?

Enquanto isso, no meu código de produção, que foi a razão pela qual comecei a pesquisar sobre tudo isso, e que não tem tantos espaços em branco, eu pude vere procurando algo assim em vez disso:

// ----------- e
foo

delme

new

bar

Tudo o que acontece commesclar nunca acusando qualquer conflito!

Se o git quisesse fazer qualquer um dos seus voodoo mágicos auto merge aqui, isto é o que eu esperaria que se pareça com:

// ----------- e
foo

new

bar

Mas isso também não acontece.

Como um pouco deaviso Legal...

Eu também tenteilendo o manual f, mas eu realmente não consigo entender muitos pontos sob estratégias de mesclagem. Além disso, não diz realmente o que oresolve estratégia está fazendo sob o capô, por exemplo:

Ele tenta detectar cuidadosamente ambiguidades cruzadas e é considerado geralmente seguro e rápido.

Isso não diz nada.

O texto sobre o padrãorecursive é maior, mas também não consegui extrair informações suficientes:

Isso foi relatado para resultar em menos conflitos de mesclagem sem causar mesclagens incorretas por testes feitos em confirmações de mesclagem reais obtidas do histórico de desenvolvimento do kernel do Linux 2.6.

Relatado? Então nós temos 1 teste de unidade muito pesado e presumimos que alguns relatórios estão corretos?

Bem, é tudo muito vago para mim.

eu acho queEu devo estar fazendo algo errado! Então, como posso fazer certo?

O que preciso fazer para voltar a me fundir sem preocupações?

questionAnswers(1)

yourAnswerToTheQuestion