Quelques amis et moi travaillons sur un projet via GitHub. Nous partageons tous la même branche, ce qui peut être une bonne idée ou non.
J'ai édité une partie du code et commis les modifications. Je suis allé à Push commit sur GitHub (je travaille avec Visual Studio 2013 et c'est l'outil Git intégré), mais j'ai eu cette erreur:
"Il y a de nouveaux changements à distance. Vous devez les tirer avant de pouvoir pousser."
J'ai donc essayé de tirer les modifications à distance et j'obtiens cette erreur:
"Une erreur s'est produite. Message détaillé: une erreur a été signalée par libgit2. Category = 21 (MergeConflict). 9 modifications non validées seraient écrasées par la fusion"
J'ai essayé de changer de branche pour pouvoir pousser mes modifications puis les fusionner avec la première branche, mais j'ai eu cette erreur:
"Impossible de basculer vers le maître car il existe des modifications non validées. Validez ou annulez vos modifications avant de changer de branche. Consultez la fenêtre Sortie pour plus de détails.
Je n'ai aucune idée de ce que je dois faire, sauf peut-être d'envoyer mes modifications par e-mail à un de mes amis et de les faire pousser mes modifications. Cependant, je ne sais pas ce qui se passerait avec mes commits locaux.
Le problème est résolu. Après m'être assuré de synchroniser toutes les validations, j'ai ouvert git bash et tiré les validations à distance. Après quelques tentatives, je suis retourné à Visual Studio et j'ai découvert qu'il avait enregistré la fusion. J'ai résolu tous les fichiers en conflit et j'ai pu pousser le projet.
Merci à tous ceux qui ont répondu!
Aussi stupide que cela puisse paraître, je suis juste allé à la ligne de commande, et cela a fonctionné.
tout fonctionnait bien.
Si j'ai fait la même chose dans Visual Studio, cela n'a pas fonctionné. Allez comprendre.
Lorsque vous utilisez le fournisseur Visual Studio Git (VS 2013, VS2015), cette situation peut également survenir dans des scénarios où un commit local a a été effectuée, mais, lors d'une tentative d'extraction du serveur et de fusion, le message d'erreur:
"les modifications non validées seraient écrasées par la fusion"
est toujours affiché et l'action Pull est annulée.
Cela peut se produire car localement, il y a ntracked Files qui ne faisaient pas partie du Commit local, mais font partie du Pull distant; la résolution de fusion ne peut pas gérer ce scénario.
Généralement cela se produit lorsque certains fichiers tels que les sorties de modèle T4 sont inclus dans une validation sur un poste de travail, mais pas sur d'autres.
De plus , cela peut se produire dans Visual Studio 2015, lorsque vous travaillez avec MVC6 projets (au moment d'écriture), lorsque des fichiers du dossier wwwroot ont été inclus dans un commit sur un poste de travail, mais pas sur un autre (une des causes possibles est que les fichiers .gitignore sont différents sur les postes de travail essayant de travailler avec le même référentiel de serveur) .
Pour résoudre:
a) Affichez la boîte de dialogue Team Explorer> Modifications.
b) Vérifiez que tous les fichiers non suivis qui résident réellement dans la branche serveur doivent être inclus dans vos validations; pour ce faire, cliquez avec le bouton droit et sélectionnez Ajouter. Alternativement, si vous souhaitez les écraser, vous pouvez sélectionner Supprimer. Veuillez faire preuve de prudence.
c) Effectuez une validation, puis une extraction, et effectuez toute résolution de conflit de fusion requise.
d) Effectuez un Push pour mettre à jour votre référentiel distant.
En ce moment, vous essayez essentiellement de faire un git merge
avec des modifications non validées dans votre branche (pull est juste fetch + merge). Git se plaint à juste titre qu'une telle opération écraserait les modifications non validées dans la branche.
Pour poursuivre l'opération d'extraction, vous devez supprimer ces modifications non validées du répertoire de travail. Il y a plusieurs façons de faire ça
Si vous êtes nouveau sur git, je commencerais probablement par l'option # 1.
Visual Studio 2013 semble manquer de maturité en tant qu'interface utilisateur GIT. J'ai rencontré un problème similaire même après avoir validé toutes mes modifications localement. Pour les erreurs résultant de Push & Pull dans Visual Studio 2013, je recommanderais d'utiliser Git Bash pour effectuer une commande git pull. La commande d'extraction en ligne de commande est beaucoup plus puissante que VS UI et résoudra certains problèmes.
En réponse à Walter Schultz, vous obtenez l'erreur parce que vous semblez essayer de conserver les fichiers binaires et d'assemblage (dll et exes) dans le contrôle de version. Les fichiers binaires ne sont ni modifiables ni fusionnables, ils ne doivent donc pas être inclus dans le contrôle de version.
Afin d'exclure ces fichiers du référentiel GIT, vous pouvez créer un fichier .gitignore et inclure les éléments suivants:
--- begin .gitignore file ----------------
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
*.cache
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
Dev/
bin/
--- end gitignore file ----------------
Une fois que vous avez créé le fichier .gitignore, accédez à votre référentiel local et supprimez tous les fichiers de votre dossier/Bin/et les autres fichiers dont vous ne souhaitez pas garder la trace.
Poussez ensuite vers local et synchronisez votre code avec le référentiel du serveur.
J'espère que cela t'aides.
La même chose m'arrivait, j'ai commis toutes mes modifications et j'obtiens la même erreur lorsque j'essaie de changer de branche.
J'ai réalisé qu'il y avait un fichier que j'ai choisi "d'ignorer" que j'ai laissé sous "Modifications exclues". Apparemment, VS2013 ne gère pas correctement ces exclusions.
Donc, après de nombreux essais, j'ai trouvé une solution simple:
Je n'ai pas eu de modifications non validées, j'ai toujours eu la même erreur lors de la fusion à développer. J'ai essayé:
Et puis essayé de nouveau la fusion pour se développer et l'erreur n'apparaît plus. Mais j'ai dû résoudre certains conflits. Je peux imaginer que seule la deuxième commande est vraiment pertinente mais je n'ai aucune idée de ce qui se passe ici, donc je documente plutôt toutes les étapes.
J'avais ce problème dans VS 2015 et la seule chose qui l'a corrigé était le redémarrage de VS. Aucune des autres situations mentionnées ci-dessus n'était applicable.
J'ai dû télécharger les outils de ligne de commande et cela m'a permis de vérifier la branche principale là-bas (qui l'a également vérifiée dans VS). J'ai ensuite fait un git pull qui a ensuite généré des erreurs supplémentaires en raison de conflits avec la fusion des succursales distantes et locales. Correction des conflits, validés puis synchronisés qui ont résolu ce problème.
J'ai dû exécuter le complément git dans VS 2013 sans que la solution soit chargée.
Mon problème était que VS a démarré application.vshost.exe lors du chargement du projet d'application Windows, et donc bloqué le complément git pour effectuer certaines opérations.
Déjà utilisé .gitignore du modèle VS studio, mais c'est quelque chose de différent.
J'ai eu un problème similaire pour un nouveau projet MVC que j'ai créé et pour toute nouvelle branche lors de la fusion, cela donne une erreur indiquant que je n'ai pas de projet que j'ai créé il y a un mois. J'ai ajouté le fichier .gitattribute du projet de travail Nice au projet avec l'erreur mentionnée ci-dessus et cela a résolu le problème. Maintenant, je peux fusionner sans aucun problème.
J'ai simplement ajouté le .gitignore au maître et je l'ai validé.
L'exécution à partir de la ligne de commande "git merge {branch name}", a généré une erreur plus spécifique. "Fusionner le conflit dans .gitignore"