2013-06-28 1 views
10

Je suis nouvelle à git et j'utilise l'extension git pour Visual Studio. Lorsque d'autres membres de l'équipe apportent des modifications parfois lorsque j'essaie de synchroniser le projet, je peux voir les validations entrantes mais le projet n'est pas synchronisé et l'erreur ci-dessous est déclenchée.Extension Git pour Visual Studio

Une erreur a été soulevée par libgit2. Catégorie = 21 (MergeConflict). 2 les modifications non validées seraient remplacées par la fusion

Le problème est que comment puis-je fusionner les conflits? Il n'y a pas de fenêtre pour fusionner les conflits après que cette erreur est survenue et j'ai également engagé tous mes changements.

Répondre

6

Le message concerne les modifications non validées et non les conflits de fusion réels. Apprenez à ne pas fusionner ou faire des trucs fantaisie git avec des modifications non validées. Avant une opération, validez vos modifications ou cachez-les. Même si un tel conflit n'est pas signalé, ce n'est probablement pas ce que vous vouliez vraiment faire. Dans GE, il existe une option pour afficher les modifications de worktree (ignorer l'avertissement «lent» sauf si vous travaillez sur un dépôt géant et avoir régulièrement des centaines de fichiers modifiés) et vous habituer à le consulter dans le navigateur. Le bouton "Commit" affiche également un nombre, qui doit être 0 lorsque vous incitez une fusion. Si au milieu de votre travail vous voulez synchroniser (et repensé et avoir une bonne raison, honnête), utilisez stash, puis tirez (ou rebase), et après que cela soit fait, décompressez votre travail.

Les conflits de fusion réels sont mieux gérées en utilisant des outils de fusion visuelle, vous pouvez essayer tortoisemerge, ou mon favori, source diffère de sourcegear. Kdiff3 qui est livré avec GE est bon à regarder autour, mais pas si bon à résoudre lui-même, sauf si tout ce dont vous avez besoin est de choisir les candidats littéralement. GE vous met automatiquement en résolution de conflit.

+1

Choisissez une bonne pratique de workflow pour éviter ce problème.Faites toujours votre travail sur une branche de fonctionnalité. tch à la branche master pour synchroniser lorsque vous êtes prêt à fusionner, puis une fois que master est à jour, fusionnez votre branche de fonctionnalité. Vous pouvez également redéfinir votre branche d'entités par rapport à l'objet principal, puis fusionner si vous préférez le flux de style d'avance rapide. Mais fondamentalement - comme indiqué dans cette réponse. – patthoyts

3

La réponse précédente n'est pas toujours vraie. Vous pouvez obtenir ce message même si vous n'avez pas de modifications non validées. Mon collègue & J'ai corrigé tous les deux un bug, et je me suis engagé dans nos repos locaux, et j'aime son mieux. Je n'ai jamais vérifié mon changement, mais je l'ai défait &. Pendant ce temps, il avait "annulé" son changement (sans me parler) et m'a demandé de repousser mon changement. Je lui ai dit que j'avais jeté mon changement, donc il a inversé son retour (se terminant par deux commits). Quand je suis allé à pousser un changement différent (commis à mon repo local sans changements non validés), il avait poussé à la fois la réversion de son changement et la re-réversion, et j'ai reçu le message ci-dessus.

La solution était assez simple, j'ai utilisé le menu Actions pour ouvrir l'invite de commande et y ai émis un git pull. Cela a fonctionné correctement et a créé une fusion de commettre pour moi avec sa réversion et re-réversion. Oui, il aurait pu (insert incomprehensible git-gibberish here) à la place, mais il ne l'a pas fait. Cela fonctionne, nous continuons.

est ici un élément de rétroaction VS sur cette question: http://connect.microsoft.com/VisualStudio/feedbackdetail/view/955248/git-merge-fails-claiming-uncommited-change-would-be-overwritten-by-merge-ssh-mergeconflict

+0

git reset --hard, a fonctionné pour moi (le problème que j'ai pu avoir été causé par des changements non validés à la même branche faite par moi sur une autre machine, VM). – learnerplates

1

Parfois, git pull ne suffit pas ... (si vous obtenez « Déjà à jour.«)

Il peut être nécessaire de faire la fusion de la ligne de commande:

En Visual Studio (2015, mise à jour 3 pour moi) dans le Team Explorer, Branches, Actions, Open In Command Prompt, puis:

git merge NameOfBranchBeingMergedFrom 

Ensuite, fermez cette fenêtre et faites le reste (Fusionner les conflits, etc) de VS