.gitattributes: merge = nossa estratégia vs. mesclagem rápida

Se eu estiver em uma situação assim:

* da6a750 (A) Further in A, okay for merging back into master
*   bf27b58 Merge branch 'master' into A
|\  
| * 86294d1 (HEAD -> master) Development on master
* | abe6b8a Welcome to branch A
|/  
* 589517c First commit

Nomaster ramificação, três arquivos:

./development:

development on master
initial

./specific:

master branch

./.gitattributes:

specific merge=ours

EmA ramificação, três arquivos também:

./development:

development on master
initial
development in A
further in A, okay for merging into master

./specific:

Welcome to branch A

./.gitattributes:

specific merge=ours

Quando eu me fundimaster para dentroA produzir commitbf27b58, Fiquei feliz que o./specific arquivo não foi alterado. Porque eu preciso que ele seja mantido como está no galhoA.

No entanto, gostaria agora de mesclar ainda maisA muda paramaster de tal maneira que, no recém-confirmado commit, o./specific arquivo seria o mesmo que no commit86294d1.

Meu palpite era quespecific merge=ours garantiria isso, mas parece não ser o caso. Eu tentei correr:

$ git merge A
Updating 86294d1..da6a750
Fast-forward
 development | 2 ++
 specific    | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

.. sem sucesso. Uma fusão de avanço rápido foi acionada e eu me deparo comA emaster ambos apontando parada6a750. Em outras palavras, eu tenho ummaster confirmar a exibiçãoWelcome to branch A no./specific Arquivo:

* da6a750 (HEAD -> master, A) Further in A, okay for merging into master
*   bf27b58 Merge branch 'master' into A
|\  
| * 86294d1 Development on master
* | abe6b8a Welcome to branch A
|/  
* 589517c First commit

.. o que não é o que eu quero.

Em vez disso, tentei executar:

$ git merge --no-ff A
Merge made by the 'recursive' strategy.
 development | 2 ++
 specific    | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

.. sem sucesso: um novo commit02c9c10 é produzido com o mesmo problema:

*   02c9c10 (HEAD -> master) Merge branch 'A'
|\  
| * da6a750 (A) Further in A, okay for merging into master
| *   bf27b58 Merge branch 'master' into A
| |\  
| |/  
|/|   
* | 86294d1 Development on master
| * abe6b8a Welcome to branch A
|/  
* 589517c First commit

.. o que não é o que eu quero porque02c9c10(master):./specific exibeWelcome to branch A.

(tão02c9c10 eda6a750 são estritamente idênticos, eles apenas fazem o hash de forma diferente por causa da mensagem de confirmação, eu acho).

Por quêspecific merge=ours parece não ser levado em consideração neste caso?
Como faço para funcionar sem precisar manualmentegit merge --no-ff --no-commit && git checkout master specific && git commit?

questionAnswers(1)

yourAnswerToTheQuestion