web-dev-qa-db-fra.com

Message d'erreur Visual Studio 2015 Git "Impossible d'extraire/de basculer car des modifications n'ont pas été validées"

J'ai de la difficulté à tirer de Origin. Je continue à recevoir:

"Impossible de tirer parce qu'il y a des modifications non validées. Validez ou annulez vos modifications avant de les extraire à nouveau. Voir la fenêtre de sortie pour plus de détails."

Cela s'applique également à la commutation de branches. Je reçois le même genre de message, mais cela n'arrive pas toujours.

J'utilise Visual Studio 2015 Update 1 et Visual Studio Team Services Git. Sur ma machine, j’ai une branche master locale et des branches de développement. Chaque fois que je passe à master et que je fais un pull, je reçois le message d'erreur. J'ai eu recours à une cachette et laisser tomber stash (ligne de commande) et parfois j'utilise TortoiseGit pour faire le pull et ça marche.

Ce qui est étrange est que même si j'essaye de restaurer (sur les fichiers non validés) à l'aide de TortoiseGit, cela indique que l'opération a été restaurée avec succès (j'ai déjà essayé d'annuler Visual Studio, rien ne se produit). Essayer de tirer à nouveau, c'est toujours le même problème. Les fichiers non validés seront là et parfois quand je fais un git status il dit qu'il n'y a rien à commettre.

Remarque: cela peut se produire même après le passage d'une branche à master. Dans ce cas, il n’ya aucun moyen d’apporter des modifications non validées car je n’aurais pas pu changer en premier lieu.

Je suis encore nouveau dans Git, mais j'aimerais savoir s'il existe un meilleur moyen de résoudre ce problème, car j'aimerais utiliser un environnement au lieu d'utiliser la commutation entre différents environnements pour chaque tâche. il est plus facile pour moi de tout faire depuis Visual Studio. J'ai déjà lu sur:

TFS/GIT dans VS ne peut pas basculer en maître car il y a des modifications non validées

METTRE À JOUR

Il semble que ce problème concerne les fins de ligne.

En faisant un git diff -R, vous pouvez voir qu'une ligne se terminant, "^ M", a été ajoutée et qu'elle est différente. Supprimer le * text=auto dans gitattributes (puis vérifier les modifications) et le réactiver afin que les attributs gitattutes ne signalent pas un changement de lui-même qui doit être engagé semble aider, il n'y aura aucun changement.

50
kwiri

Pour moi, je n'ai pas eu de modifications non validées ni de fichiers non suivis, et Visual Studio 2015 a quand même présenté l'avertissement.

  1. Fermez la solution dans Visual Studio, quittez Visual Studio.
  2. Ouvrez Git Bash (ou votre interface utilisateur Git préférée)
  3. Accédez à votre référentiel (ou ouvrez le référentiel avec l'interface utilisateur Git)
  4. git pull (ou tirez sur l'interface utilisateur de Git)
  5. La fusion se produit (heureusement, pas de conflit, comme dans mon cas), vi s'ouvre (ou l'outil de résolution de fusion par défaut)
  6. :wq puis appuyez sur ENTER dans vi (ou calmer manipulez l'outil de fusion qui est apparu en option) et j'espère que cela résoudra le problème comme pour moi.
  7. Démarrez Visual Studio 2015, ouvrez le projet.

J'ai ajouté une solution plus sécurisée étape par étape en demandant à la solution de fermer et d’ouvrir la solution ainsi que Visual Studio. Cela peut être trop prudent, et peut-être qu'une recharge suffirait. Ce symptôme pourrait être un bogue des composants d'intégration Visual Studio Git, et il sera peut-être résolu à l'avenir.

57
Csaba Toth

Tapez git status dans une ligne de commande ouverte dans ce répertoire. S'il y a du texte rouge et/ou vert, vous avez modifié des éléments et non ajouté et validé. Retournez les fichiers (en faisant git checkout -- <file>) ou ajoutez et validez (en faisant git add --all puis git commit -m "commit message"). Vous pouvez ensuite consulter les succursales ou tout ce que vous voulez faire.

9
TechnicalTophat

Essayez avec ces commandes en allant dans le répertoire de travail du projet dans la commande Invite.

git add -A
git commit -m "your message"
git fetch Origin master
git pull Origin master
git Push Origin master //To Push to the Git system
8
Dhruv

Ce problème se produit généralement lorsqu'un fichier/une modification n'a pas été validé localement, mais qu'il est inclus dans l'action d'extraction.

Par exemple, vous ajoutez un nouveau fichier "test.txt" directement à partir de votre dossier de référentiel Git local (en dehors de Visual Studio). Ce fichier peut être répertorié dans l'option "Fichiers non suivis". Ainsi, lorsque vous validez des modifications, ce fichier n'est ni suivi ni validé. Et puis, une autre personne crée également un "test.txt" avec le même chemin et valide le résultat. Désormais, lorsque vous effectuez une opération d'extraction, le fichier "test.txt" est inclus dans l'action d'extraction et vous obtenez le message d'erreur indiquant qu'il existe des modifications non validées. Vous devez donc vérifier si vous avez des fichiers/modifications non validés et les valider avant de les extraire.

6
Eddie Chen - MSFT

Cela a fonctionné pour moi. Je suis juste allé dans le répertoire du projet et j'ai vérifié s'il y avait quelque chose 

git status

Ensuite, j'ai effectué un pull en utilisant

git pull

Ensuite, j'ai redémarré Visual Studio 2015 et extrait la branche à l'origine de cette erreur. Cette fois-ci, sans problème… .. Il semble que ce soit un bogue dans Visual Studio 2015. Il ne se produit que lorsque vous annulez vos modifications avant d'extraire les nouvelles modifications. Ce même problème ne semble pas exister dans Visual Studio 2017.

1
Rachit Chauhan

J'avais ce problème dans Visual Studio 2017 build 15.5 et ce qui était résolu pour moi était d'aller dans Team Explorer ParamètresParamètres généraux et paramètre "Élaguer les branches distantes lors de l'extraction" et "Redéfinissez la branche locale lorsque vous tirez "sur True.

 Team Explorer Git Settings

http://www.codewrecks.com/blog/index.php/2017/12/23/configure-visual-studio-2017-15-5-for-pull-rebase/

MS a également les instructions ici: https://docs.Microsoft.com/en-us/Azure/devops/repos/git/git-config?tabs=visual-studio&view=vsts#Prune-remote-branches-during -fetch Le moment de facepalm est celui où vous réalisez que "Nous vous recommandons de définir cette option sur True au niveau global." n'est pas le paramètre par défaut sur ces éléments.

1
user1431356

Cela arrive parfois même avec moi. Si vous utilisez Visual Studio, il existe un moyen simple de préciser votre chemin.

Pour Visual Studio 2013 et les versions ultérieures, suivez les instructions suivantes, car cela a fonctionné pour moi:

  • Aller au menu Outils Gestionnaire de paquets NuGet Console du gestionnaire de package .
  • Tapez git reset et appuyez sur Enter

C'est tout. Git sera réinitialisé et vous pourrez alors extraire facilement votre demande.

VS2015: Outils> Gestionnaire de paquets Nuget> Console du gestionnaire de paquets. Travaillé comme un charme. Merci.

1
Yagnesh Khamar

J'ai eu ce problème également. Une solution simple consistait à sélectionner Commit sur la solution pour voir les fichiers non validés (ou à utiliser facilement Team Explorer Modifications ).

Ensuite, j'annule chaque fichier à l'aide d'un clic droit. Avant, je l’avais testée par Undo sur toute la solution, mais cela ne fonctionnait pas correctement. Là encore, j'ai utilisé Team Explorer Sync Pull , et cela a fonctionné.

1
Elnaz

Voici les étapes que j'ai suivies:

  1. Référez-vous au chemin du fichier non validé dans la fenêtre de sortie
  2. Accédez à ce chemin et supprimez ce fichier du dossier
  3. Annulez vos modifications de Team Explorer dans Visual Studio pour les ajouter à nouveau
0
CSharp

Dans Visual Studio, ouvrez Output Window et passez de Show output from à Source Control - git, git vous indiquera ce qui l'empêche de tirer. Une des causes les plus courantes peut bien sûr être quelque chose comme ceci:

The pull would overwrite your local changes to the following 44 files:
    <Here you can probably see a list of 44 files>

Cela signifie simplement que 44 fichiers ont été ajoutés au référentiel remote qui ne font pas partie du référentiel local. Ouvrez Git Bash et exécutez cette commande:

git add *

Cela peut résoudre le problème ou aboutir à une erreur comme celle-ci:

$ git add *
The following paths are ignored by one of your .gitignore files:
TestResults
Use -f if you really want to add them.

Si vous êtes sûr de les ajouter à la reproduction local, ajoutez-les simplement à l'aide de git add * -f ou supprimez les fichiers ajoutés par erreur de remote.

J'espère que cela t'aides.

0
Babak

Pour moi, la "Mise à jour" de la question était la réponse. J'ai ajouté un fichier .gitattributes à la racine de mon référentiel et inclus uniquement les éléments suivants, de sorte que les fins de ligne ne soient normalisées que dans les cas où le fichier est du texte. 

*.txt text
*.html text
*.css text
*.js text
# These files are text and should be normalized (Convert crlf => lf)
*.gitattributes text
.gitignore text
*.md texttesting 
0
Josh

Pour moi, ce problème était dû au fait que deux fichiers, "Web.Config" et "web.config". Je suppose que cela convient sous Linux/Unix, mais Windows ne peut en stocker qu’un localement. Je l'ai détecté dans Azure Devops explorant les fichiers. J'ai supprimé l'un d'eux et le problème a été résolu. Je suppose que ce problème pourrait être causé par n'importe quel fichier.

0
Emil Helldin