Bonjour,
Je souhaiterais pour un git merge, que certains fichiers spécifiques soient écrasés plutôt que fusionnés, tandis que pour tous les autres fichiers ce soit un merge normal qui soit exécuté. Est-ce que je peux faire ça, et si oui, comment ?
Explication du contexte: j'ai deux branches, dev et master. JE me trouve actuellement sur dev et j'aimerais fusionner avec master, sur dev donc. J'insiste, je veux bien fusionner master sur dev et pas l'inverse ! Oui je sais, je suis peut-être bizarre; on aura l'occasion d'y revenir si vous avez envie.
depuis le moment où j'ai créé la branche dev, un certain nombre de bugs ont été corrigés sur master entre temps. Les bugs en question n'ont pas encore été corrigé sur dev puisque la création de la branche est antérieure à la correction de ces bugs. En plus simple, les deux branches dev et master ont évolué complètement indépendament. IL me faut donc fusionner la branche master depuis dev pour que ces bugs soient désormais aussi corrigés sur dev.
Or, sur dev, certains fichiers ont depuis été refactorés, c'était justement un des objectifs de cette banche dev. En faisant un git merge, je suis à peu près certain que l'opération va planter et je vais me retrouver avec des fichiers automergé qui seront pourris où il faudra effacer près de 50% à la main (en plus le risque d'erreur est très élevé dans ce genre de manip). JE voudrais donc que pour ces fichiers, et seulement ceux-là, git n'essaye même pas de les fusionner, mais qu'il prenne à la place ma version locale sans poser de question; tandis que les autres seront fusionnés de manière classique avec la'lgorithme par défaut de git.
Bien sûr, la solution crado est de faire une copie des fichiers en question en-dehors du dépôt, lancer le git merge, remettre les fichiers préalablement copiés, puis enfin commit, mais je me doute bien qu'il y a une solution moins hacky.
En d'autres termes pour ceux qui ont connu SVN, je voudrais que l'option mine full soit choisie automatiquement pour résoudre les conflits sur ces fichiers-là, mais seulement ceux-là.
Question bonus pour ceux qui ont des conseils à fournir en la matnière, puis-je améliorer mon système/workflow pour ne plus être coincé par ce genre de problème à l'avenir ? Par exemple est-ce que j'ai fait une erreur en corrigeant toute une flopée de bugs directement sur master ? J'aurais dû faire autrement ?
Merci pour vos réponses.