J'ai lu diverses choses sur la fonctionnalité de rerere de git, et j'envisage de l'activer. Mais je n'ai vu personne mentionner d'éventuels problèmes qui pourraient survenir lors de son utilisation. Je dois supposer qu'il y a un inconvénient, ou il serait probablement activé par défaut. Y a-t-il donc un inconvénient à permettre la réutilisation? Quels problèmes potentiels cela peut-il causer qui ne se produiraient pas autrement?
git
merge
git-rerere
Ryan C. Thompson
la source
la source
Resolved 'index.html' using previous resolution.
Réponses:
Si vous effectuez une fusion incorrecte, puis supprimez-la, puis recommencez la fusion «identique», elle sera à nouveau incorrecte. Vous pouvez cependant oublier une résolution enregistrée. De la documentation :
Veillez à l'utiliser sur des chemins spécifiques; vous ne voulez pas épater toutes vos résolutions enregistrées partout. (
forget
sans argument est obsolète pour vous éviter de faire cela, sauf si vous tapezgit rerere forget .
pour le demander explicitement.)Mais si vous ne pensez pas à le faire, vous pourriez facilement finir par mettre cette fusion incorrecte dans votre historique.
la source
rerere
laisse toujours les fichiers avec des conflits marqués comme non fusionnés, de sorte que vous devez les ajouter manuellement (espérons-le après les avoir inspectés / testés) avant de les valider. Vous pouvez toujours utilisergit checkout -m <path>
pour extraire la version d'origine en conflit et refaire la résolution si nécessaire.Comme le mentionne JC Hamano dans son article " Fun with rerere "
Donc, si vous activez
rerere
sur un contenu trop large, vous risquez de vous retrouver avec une résolution de fusion surprenante ou déroutante à cause du dernier point.la source
J'ai le rerere globalement activé. Je n'ai vraiment pas remarqué de problèmes et cela semble généralement me faciliter la vie.
la source
J'ai choisi un commit (dans gitk) qui ne contenait qu'un fichier binaire. Cherrypick a échoué en raison d'un conflit (ce qui est naturel) et j'ai résolu le conflit en gardant le choix. J'ai été surpris plus tard de trouver dans une autre branche rebasée que mes dll ne se comportaient pas - seulement pour découvrir qu'elles n'étaient pas portées dans le rebase comme (je suppose) la résolution automatique des conflits. C'est donc le seul cas que j'ai rencontré (après avoir activé la rerere) de se heurter à un comportement contre-intuitif (même si je suis sûr parfaitement cohérent).
la source
git rerere forget path/to/compiled/bin.dll