Lors de la fusion de branches sous contrôle de source, il y a souvent le problème d'un conflit de fusion avec d'autres développeurs.
Je sais que nous pouvons utiliser vimdiff pour différencier les modifications de code par rapport au contrôle de code source , mais existe-t-il également un moyen d'utiliser vimdiff pour aider à résoudre les conflits de conflits de fusion.
Personnellement, je suis plus intéressé par git mais il serait utile de comprendre s'il existe des plugins / techniques pour d'autres outils / systèmes de contrôle de source.
vimdiff
version-control-systems
merge
Martin York
la source
la source
feature rich UI
est trompeur; vimdiff peut ne pas avoir une belle interface utilisateur, il est certainement riche en fonctionnalités. Je trouve également vim un environnement beaucoup plus productif que tous les éditeurs GUI que j'ai utilisés (mais je l'utilise depuis longtemps et c'était une courbe d'apprentissage abrupte). Je suis plus curieux de savoir si Meld fait quelque chose que vim ne fait pas, ce qui en valait la peine.Réponses:
J'utilise normalement git sur la ligne de commande.
Mais quand il y a un conflit de fusion, j'utilise Vim pour les résoudre (personnellement, je le fais avec le plugin fugitif). Remarque: fugitif est bon pour beaucoup de manipulations de git depuis Vim. Ma fonctionnalité préférée est la différence à 3 voies d'un conflit de fusion.
git prend cela en charge dans vimdiff via git mergetool. J'ai installé fugitive mais vous pouvez le configurer manuellement (merci @ Jay Thompson).
Configuration manuelle:
La sortie est légèrement différente de ce qui est décrit ci-dessous (je ne l'ai pas personnellement utilisé). Mais le principe est le même mais vous avez une quatrième fenêtre en bas contenant le résultat.
Configurer avec Fugitive
vim-fugitive est un plugin git wrapper / intégration pour Vim; il peut faire beaucoup de choses, et la résolution des conflits en fait partie.
Vous pouvez maintenant extraire et récupérer le texte des deux autres vues dans la vue centrale (qui va contenir toutes les corrections manuelles). Une fois que vous avez résolu tous les conflits manuellement, quittez simplement vimdiff
Bien que vous puissiez utiliser
:diffget <view number>
et:diffput <view number>
pour tirer et pousser des choses entre les vues. Personnellement, je ne trouve pas cela très utile. Tout le code est déjà dans la vue du milieu. Donc j'aime juste éditer cette vue manuellement jusqu'à ce que le conflit soit résolu. Être capable de voir les deux versions du code de chaque côté de la fenêtre de mon éditeur est cependant extrêmement utile.Aussi une très bonne démo de son utilisation ici
la source
git config --global merge.tool vimdiff
puis exécutergit mergetool
pour démarrer vim en mode diff.diff3 -E
. Les images ci-dessus sont donc générées à partir de fichiers contenant ces marqueurs.