web-dev-qa-db-fra.com

Visual Studio 2013 ne propose pas de fusionner sur Git Pull

Je travaille avec Visual Studio 2013 Update 4 et git (hébergé sur Visual Studio Online). J'ai 2 commits locaux et 2 commits dans une branche distante. Il n'y a AUCUN changement local à valider:

Working directory clean

Lorsque j'essaie de faire Pull (ou Fetch) dans Visual Studio, j'obtiens une erreur:

Une erreur est survenue. Message détaillé: 1 conflit empêche le paiement

An error occurred. Detailed message: 1 conflict prevents checkout

Oui, il y a un conflit, je devrais fusionner. Et selon sur cette page On devrait me proposer un lien pour résoudre le conflit. Mais je ne vois pas cela dans VS.

Je peux fusionner en dehors de VS, mais ce n'est pas le but. Dans le même temps, mon collègue exécutant la même configuration peut effectuer la fusion sans problème. Quel est le problème avec mon VS?

p.s. J'ai installé msysgit qui pourrait avoir gâché les configurations. Selon cela post mon global .gitconfig ressemble à:

[user]
    mail = [email protected]
    name = trailmax
    email = [email protected]
[core]
    excludesfile = C:\\Users\\trailmax\\Documents\\gitignore_global.txt
    autocrlf = true
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor
[diff]
    tool = vsdiffmerge    
[difftool "vsdiffmerge"]
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
    keepbackup = false
    trustexistcode = true
[merge]
    tool = vsdiffmerge
[mergetool]
    Prompt = true
[mergetool "vsdiffmerge"]
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
    keepbackup = false
    trustexistcode = true
[credential]
35
trailmax

Dans mon cas, je ne pouvais pas voir le Resolve the conflicts option car j'avais changements locaux pas encore validé et j'essayais de me synchroniser avec la télécommande changements. Dès que j'ai validé mes changements locaux puis réessayé une synchronisation, Resolve the conflicts le lien est apparu.

Donc, le point ici est: commit vos modifications d'abord, puis essayez de synchroniser. Un fusion démarrera et Visual Studio vous permettra de parcourir chacun des conflits.

enter image description here

55
Leniel Maccaferri

J'ai rencontré le même problème où "Une erreur s'est produite. Message détaillé: 1 conflit empêche le paiement" s'affiche où il n'y a pas d'option pour résoudre le conflit comme indiqué dans la réponse de Leinel.

La raison était due à un fichier non suivi qui est le même fichier à extraire. Je viens de supprimer le fichier non suivi et j'ai réessayé la traction.

12
Karlo Medallo

J'ai eu le même problème. Il s'avère que j'avais un fichier non suivi qui devait être inclus. Par conséquent, vérifiez dans l'onglet Modifications les fichiers non suivis.

6
azuneca

Je n'avais aucun "Changement" (non suivi ou autre) répertorié sur l'une ou l'autre branche, donc les autres réponses n'ont pas fonctionné pour moi.

J'ai décidé d'aller en ligne de commande:

  1. Cliquez sur Sync sur les deux branches.
  2. Basculez vers la branche dans laquelle vous souhaitez "fusionner" (maître dans mon cas).
  3. Dans Team Explorer sous Gérer les branches, faites Action -> Ouvrir la ligne de commande.
  4. Dans la ligne de commande, tapez git merge BRANCH_NAME. (ma branche de travail/fusion "de")
  5. Maintenant, le bouton Résoudre les conflits est disponible.
4
Jess

Si les conflits pendant le pull concernent des caractères de fin de ligne:

git config --global core.autocrlf false

Cela devrait éviter toute conversion EOL automatique.

Vous pouvez voir plus dans " Pourquoi git pense que chaque ligne d'un fichier vierge a changé " comment détecter cette situation dans l'arborescence de travail (git diff --Word-diff-regex=.).

1
VonC