.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
?