Evite fusionar un file de master con Git

En otra pregunta , se recomienda utilizar .gitattributes para mantener el file rastreado pero no fusionado en una twig diferente, pero mi caso de uso a continuación parece no funcionar.

 mkdir git cd git git init echo "B" > b.txt git add b.txt git commit -m 'Initial commit' echo "b.txt merge=keepMine" > .gitattributes git add .gitattributes git config merge.keepMine.name "always keep mine during merge" git config merge.keepMine.driver "keepMine.sh %O %A %B" git commit -m 'Ignore b.txt' git checkout -b test # Create a branch git checkout master # Back to master and make change echo "Only in master" > b.txt git commit -a -m 'In master' git checkout test git merge master # The change in b.txt is being merged... 

¿Alguna idea? Gracias..

Sospecho que no funcionó porque no hubo conflictos de fusión.

Sin embargo, puedo confirmar que git merge master --strategy=ours funciona como se esperaba.

Esto podría ser lo que estás buscando: Cómo decirle a Git que siempre select mi versión local

Si desea especificar una estrategia de combinación específica para un file específico, lo que realmente necesita hacer es escribir un controller de combinación personalizado y especificar en la configuration del repository que desea que el controller de fusión se use como el pnetworkingeterminado. Vea el enlace de arriba sobre cómo usarlo.

En resumen, la razón por la que no funciona en su caso de uso es porque su caso de uso no es una combinación . Solo retrata un montón de cambios en el maestro con una twig temporal llamada testing que se está creando y luego se mueve a master más adelante. En realidad, nunca introduces una confirmación mientras estás en la twig de testing .

El controller de combinación personalizado mencionado por carleeto se ilustra en " Decir git no fusionar files binarys, sino elegir ":

Puede declarar en un file .gitattributes el tipo de combinación que desea:

 echo yourConfigFile merge=keepMine > parentDirectory\.gitattributes