251 votes

Comment utiliser vimdiff pour résoudre un conflit?

Je viens de fusionner une branche dans mon maître dans git et j'ai maintenant Automatic merge failed; fix conflicts and then commit the result. Maintenant, j'ai lancé git mergetool et vim diff ouverts avec l'image ci-dessous. Je ne sais pas comment utiliser vimdiff, quelqu'un pourrait-il m'expliquer ce qui se passe ici? Je pense que les styles corrects sont ceux du bas. Toute aide serait grandement appréciée.

entrez la description de l'image ici

198voto

chepner Points 54078

Tous les quatre tampons de fournir une vision différente d'un même fichier. Le haut à gauche de la mémoire tampon (LOCALE) est la façon dont le fichier regardé dans votre branche cible (ce que vous êtes en fusion). Le haut à droite de la mémoire tampon (à DISTANCE) est la façon dont le fichier regardé dans votre branche source (où vous êtes à la fusion de l'). Le milieu tampon (de BASE) est l'ancêtre commun des deux (de sorte que vous pouvez comparer la façon dont la gauche et la droite versions ont divergé à partir de l'autre).

Je me trompe peut-être sur le point suivant. Je pense que la source du conflit de fusion est que les deux fichiers ont été modifiés de la même partie du fichier depuis la BASE; LOCAL a changé les citations de double à un seul, et à DISTANCE a fait le même changement, mais aussi changé la valeur d'arrière-plan à partir d'une couleur à une URL. (Je pense que la fusion n'est pas assez intelligent pour remarquer que toutes les modifications LOCALES sont également présents dans la DISTANCE; il sait juste que le LOCAL a fait des changements depuis la BASE dans les mêmes endroits que la DISTANCE a).

Dans tous les cas, la partie inférieure de la mémoire tampon contient le fichier que vous pouvez réellement modifier—, celui qui est assis dans votre répertoire de travail. Vous pouvez faire toutes les modifications que vous le souhaitez; vim est de vous montrer comment il diffère de chacune des vues de dessus, qui sont les zones que l'automatique de fusion ne pouvais pas ne pas la poignée. Tirez sur les changements de LOCAUX si vous ne voulez pas les modifications DISTANTES. Tirez sur les changements de la TÉLÉCOMMANDE si vous préférez les changements LOCAUX. Tirez à partir de la BASE si vous pensez à la fois LOCAUX et DISTANTS sont mauvais. Faire quelque chose de complètement différent si vous avez une meilleure idée! En fin de compte, les changements que vous apportez ici sont ceux qui seront effectivement engagés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X