git: Définir une règle de merge pour éviter les conflits sur un fichier spécifique

Parfois on a besoin de définir des règles dans Git afin que son fonctionnement s'adapte aux besoins du projets.

Par exemple, on peut vouloir qu'un fichier spécifique subisse une règle de gestion lors d'un merge de deux branches.

L'exemple ci-dessous montre comment faire en sorte qu'un fichier "plop" dans un dossier "plip" soit conservé sur la branche sur laquelle on fait le merge. Ainsi la branche "source" et la branche "destination" du merge conserveront leur version du fichier lorsque nous ferons un merge.

La manipulation suivante est à faire sur les deux branches:

$ echo "plip/plop merge=ours" >> .gitattribute
$ git add .gitattribute
$ git commit -m "Git attribute"

Ensuite, il convient de dire à Git qu'on veut utiliser ces règles:

# si vous voulez que ce soit le cas uniquement pour le projet courant:
$ git config merge.ours.driver true

# si vous voulez que ce soit le cas pour tous les projets:
$ git config merge.ours.driver true

Il ne reste plus qu'à faire un merge.

En cas de conflit, Git fera alors un merge automatique:

$ git merge feature1 --no-ff
Auto-merging plip/plop
0 files changed, 0 insertions(+), 0 deletions(-)