Détails
Comment résoudre les conflits de fusion dans Git
Comment résoudre les conflits de fusion dans Git ?
4577
3
Comment résoudre les conflits de fusion dans Git ?
Essayez :
git mergetool
Il ouvre une interface graphique qui vous guide à travers chaque conflit, et vous pouvez choisir comment fusionner. Parfois, cela nécessite un peu d'édition manuelle par la suite, mais en général, cela se suffit à lui-même. C'est certainement beaucoup mieux que de faire tout cela à la main.
Comme pour le commentaire de @JoshGlover :
La commande n'ouvre pas nécessairement une interface graphique à moins que vous n'en installiez une. L'exécution de
git mergetool
pour moi a eu pour résultat l'utilisation devimdiff
. Vous pouvez installer l'un des outils suivants pour l'utiliser à la place :meld
,opendiff
,kdiff3
,tkdiff
,xxdiff
,tortoisemerge
,gvimdiff
,diffuse
,ecmerge
,p4merge
,araxis
,vimdiff
,emerge
.Voici un exemple de procédure pour utiliser
vimdiff
pour résoudre les conflits de fusion. Basé sur [ce lien][1]Etape 1 : Exécutez les commandes suivantes dans votre terminal
Cela fera de vimdiff l'outil de fusion par défaut.
Etape 2 : Exécutez la commande suivante dans le terminal
Etape 3 : Vous verrez un affichage de vimdiff dans le format suivant
Ces 4 vues sont
Vous pouvez naviguer entre ces vues en utilisant ctrl+w. Vous pouvez atteindre directement la vue MERGED en utilisant ctrl+w suivi de j.
Plus d'informations sur la navigation dans vimdiff [ici][2] et [ici][3].
Étape 4. Vous pouvez modifier la vue MERGED de la manière suivante
Si vous voulez obtenir les modifications de REMOTE
Si vous voulez obtenir des changements de BASE
Si vous voulez obtenir les changements de LOCAL
Etape 5. Sauvegarder, quitter, valider et nettoyer
:wqa
sauvegarder et sortir de vigit commit -m "message"
git clean
Supprime les fichiers supplémentaires (par exemple *.orig) créés par l'outil diff.[1] : http://www.rosipov.com/blog/use-vimdiff-as-git-mergetool/#fromHistor [2] : https://stackoverflow.com/questions/4556184/vim-move-window-left-right [3] : https://stackoverflow.com/questions/27151456/how-do-i-jump-to-the-next-prev-diff-in-git-difftool
Identifiez les fichiers qui sont en conflit (Git devrait vous le dire).
Ouvrez chaque fichier et examinez les diffs ; Git les délimite. Avec un peu de chance, il sera évident de savoir quelle version de chaque bloc il faut conserver. Vous devrez peut-être en discuter avec les autres développeurs qui ont commis le code.
Une fois que vous avez résolu le conflit dans un fichier
git add the_file
.Une fois que vous avez résolu tous les conflits, faites
git rebase --continue
ou n'importe quelle commande que Git vous a dit de faire quand vous avez terminé.Si vous faites souvent de petits commits, alors commencez par regarder les commentaires des commits avec
git log --merge
. Ensuite,git diff
vous montrera les conflits.Pour les conflits qui impliquent plus de quelques lignes, il est plus facile de voir ce qui se passe dans un outil GUI externe. J'aime opendiff -- Git supporte également vimdiff, gvimdiff, kdiff3, tkdiff, meld, xxdiff, emerge en sortie de boîte et vous pouvez en installer d'autres :
git config merge.tool "your.tool"
définira l'outil de votre choix et ensuitegit mergetool
après une fusion ratée vous montrera les différences dans le contexte.Chaque fois que vous modifiez un fichier pour résoudre un conflit,
git add filename
mettra à jour l'index et votre diff ne le montrera plus. Lorsque tous les conflits sont gérés et que leurs fichiers ont étégit add
,git commit
terminera votre fusion.