Vous pouvez définir *.tbl merge=ours
dans le fichier .gitattributes
, et d'ajouter un paramètre global:
git config --global merge.ours.driver true
Il ne conserver que la version du fichier *.tbl
sur master
branche pour une partie des situations (comme les deux premières situations ci-dessous).
Lors de la fusion d'autres branches dans master
, il a trois situations pour le fichier *.tbl
: le fichier *.tbl
- a-conflit lors de la fusion: cela signifie que la version du fichier
*.tbl
dans d'autres branches est différent de la version dans la branche master
. Puisque vous avez défini des stratégies de fusion pour le *.tbl
comme le nôtre. Alors la version de *.tbl
sur la branche master
sera ketp.
- n'a pas changé le fichier
*.tbl
des deux côtés: cela signifie que les deux versions de fichier *.tbl
sur master
les autres branches sont les mêmes, donc ne vous inquiétez pas le fichier *.tbl
sur master
branche est écrasée.
Modifier le fichier *.tbl
que de l'autre côté des branches: cela écrase le fichier *.tbl
avec la version des autres branches depuis git merge utiliser la stratégie de fusion récursive. Donc, vous devez changer le fichier *.tbl
avec la version sur la branche master
. Ainsi, vous pouvez utiliser les commandes ci-dessous:
git merge branchname
git checkout HEAD~ *.tbl
git commit -m 'switch the file as the version on master'
BTW, si le fichier *.tbl
est pas nécessaire de contrôle de version sur les branches non-maître, vous ne pouvez gérer le fichier sur la branche master
.
Ou il y a une autre option, vous pouvez consulter: gérer le fichier *.tbl
dans une branche séparée (telle branche tbl
).
Même le fichier *.tbl
peut être écrasé sur la branche master
, la version sur la branche tbl
doit être correcte.Lorsque vous avez besoin d'une nouvelle version, vous pouvez checkout la version de tbl
branche à branche master
:
git checkout master
git checkout tbl *.tbl
git commit -m 'recovery the version as last release'
Ensuite, vous pouvez préparer à la nouvelle version.
Après avoir relâché sur master
branche, vous pouvez mettre à jour le fichier sur tbl
branche:
git checkout tbl
git checkout master *.tbl
git commit -m 'update the file with new release version on tbl branch'
En fait ce n'est pas tout à fait vrai, car il y a une troisième situation: si je modifie le fichier .tbl seulement dans la branche develop et ensuite je fusionne cette branche sur le master, je n'obtiendrai pas de conflit changements de la branche de développement. – ArenaLor
'git merge -sons' n'est pas correct non plus: il dit à Git de * complètement ignorer * l'autre branche. C'est bien pour les fichiers '* .tbl', mais vraisemblablement tous les * autres * fichiers devraient être fusionnés. – torek
J'ai mis à jour ma réponse, et pour la situation le fichier '* .tbl' a seulement changé sur d'autres branches, il a besoin d'étapes supplémentaires pour passer les fichiers à la version originale sur la branche' master'. –