Message d'erreur git de Visual Studio 2015 " impossible de tirer / basculer parce qu'il y a des changements non engagés"

j'ai de la difficulté à tirer de origin . Je reçois:

" impossible de tirer parce qu'il y a des changements non engagés. Valider ou annuler vos modifications avant de tirer de nouveau. Voir la fenêtre de Sortie pour plus de détails."

s'applique également aux branches de commutation. Je reçois un message similaire, mais ce n'est pas toujours le cas.

j'utilise Visual Studio 2015 Update 1 et Visual Studio Team Services Git. Sur ma machine, j'ai une branche locale master , et des branches de développement. Chaque fois que je passe à master et que je tire, je reçois le message d'erreur. J'ai eu recours à faire une stash and drop stash (ligne de commande) et parfois j'utilise TortoiseGit pour faire la traction et cela fonctionne.

ce qui est étrange, c'est que même si j'essaie de revenir en arrière (sur les fichiers non engagés) en utilisant TortoiseGit, cela montre qu'il a été inversé avec succès (I ont déjà essayé Visual Studio undo, rien ne se passe). Essayer de tirer à nouveau, c'est toujours le même problème. Les fichiers non engagés seront là et parfois quand je fais un git status il dit qu'il n'y a rien à commettre.

juste une note: cela peut se produire même après passage d'une branche sur master . Dans ce cas, il n'y a aucun moyen qu'il puisse y avoir des changements non engagés, parce que je n'aurais pas été capable de changer en premier lieu.

je suis encore nouveau pour Git, mais j'aimerais savoir s'il y a une meilleure façon de résoudre ce problème car je voudrais 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 à partir de Visual Studio. J'ai déjà lu sur:

TFS/GIT dans VS Ne peuvent pas changer de maître parce qu'il y a des modifications non validées

mise à JOUR

Il semble que ce problème a à voir avec les fins de ligne.

en faisant un git diff -R vous pouvez voir qu'une fin de ligne a été ajoutée," ^m", et il est différent. Supprimer le * text=auto dans gitattributes (puis vérifier les changements) et le remettre en marche pour que gitattributes ne signale pas un changement de lui-même qui doit être engagé semble aider, il n'y aura pas de changements.

46
demandé sur Peter Mortensen 2016-04-15 15:34:56

10 réponses

pour moi, je n'avais pas de modifications non engagées ni de fichiers non tracés, et Visual Studio 2015 a quand même présenté l'avertissement.

  1. fermer la solution dans Visual Studio, sortie Visual Studio.
  2. Ouvrir Git Bash (ou votre favori Git de l'INTERFACE utilisateur)
  3. Accédez à votre espace de stockage (ou ouvrez le référentiel avec le Git de l'INTERFACE utilisateur)
  4. git pull (ou effectuer tirez sur le Git de l'INTERFACE utilisateur)
  5. Fusion se passe (j'espère pas de conflits, comme dans mon cas), vi s'ouvre (ou la fusion par défaut l'outil de résolution)
  6. :wq puis appuyez sur ENTER dans vi (ou serrez la poignée de l'outil de fusion qui a surgi en option) et si tout va bien cela résout comme pour moi.
  7. démarrer Visual Studio 2015, ouvrir le projet

j'ai ajouté une étape par étape plus sûre instruction de fermer et d'ouvrir la solution et Visual Studio. C'est peut-être plus prudent, et peut-être un rechargement serait suffisant. Ce symptôme pourrait être un bug des pièces D'intégration Git de Visual Studio, et peut-être qu'il sera résolu à l'avenir.

54
répondu Csaba Toth 2018-06-20 22:54:19

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 changé certaines choses et non pas ajouté et engagé. Soit retourner les fichiers (en faisant git checkout -- <file> ), soit ajouter et commit (en faisant git add --all puis git commit -m "commit message" ). Vous pouvez ensuite vérifier les branches ou tout ce que vous voulez faire d'autre.

8
répondu TechnicalTophat 2016-04-15 12:38:29

Essayez avec ces commandes, en passant par le répertoire de travail du projet dans l'invite de commande.

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
répondu Dhruv 2018-06-20 22:49:56

ce problème se produit généralement lorsqu'il y a un fichier/changement qui n'a pas été engagé localement, mais qui est inclus dans l'action pull.

Par exemple, vous ajoutez un nouveau fichier "test.txt" à partir de votre dossier de dépôt Git local directement (en dehors de Visual Studio). Ce fichier peut être répertorié dans l'option" Untracked Files", donc lorsque vous propagez des modifications, ce fichier n'est pas suivi et engagé. Et puis une autre personne crée aussi un "test".txt" avec le même chemin et commit & push il. Maintenant, quand vous effectuez une action de traction, "test.txt " fichier est inclus dans l'action pull et vous obtiendrez le message d'erreur qui indique qu'il y a des changements non engagés. Vous devez donc vérifier si vous avez des fichiers/modifications qui n'ont pas été engagés et les propager avant de tirer.

6
répondu Eddie Chen - MSFT 2018-06-20 22:52:04

j'ai eu ce problème dans Visual Studio 2017 construire 15.5 et ce qui l'a corrigé pour moi allait dans L'équipe Explorer paramètres Paramètres globaux et le réglage " Prune branches distantes pendant fetch " et " branche locale de Rebase en tirant vrai .

1
répondu user1431356 2018-06-20 22:57:22

j'ai eu ce problème aussi. Une solution facile était que j'ai choisi Commit sur la solution pour voir les fichiers non engagés (ou facilement utiliser Team Explorer change ).

puis je défais chaque fichier en cliquant avec le bouton droit de la souris. Avant, je l'ai testé par Undo sur l'ensemble de la solution, mais il n'a pas fonctionné correctement. Puis encore, j'ai utilisé Team Explorer Sync Pull , et ça a marché.

1
répondu Elnaz 2018-06-20 23:00:02

Pour moi, la "mise à Jour" dans la question était la réponse. J'ai ajouté un .gitattribute le fichier à la racine de mon dépôt et inclus seulement les suivants, de sorte que les fins de ligne ne seraient 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
répondu Josh 2017-11-02 19:47:31

Voici les étapes que j'ai suivies:

  1. reportez-vous à la voie de la non validées fichier dans la fenêtre de sortie
  2. naviguez vers ce chemin et supprimez ce fichier du dossier
  3. annuler vos changements de Team Explorer Dans Visual Studio pour l'ajouter à nouveau
0
répondu CSharp 2018-06-20 22:55:16

ça a marché pour moi. Je suis juste allé à l'annuaire du projet et vérifié si quelque chose est là

git status

puis j'ai effectué une traction en utilisant

git pull

puis J'ai redémarré Visual Studio 2015 et j'ai retiré la branche qui causait cette erreur. Cette fois, sans problème. Il semble que C'était un bug Dans Visual Studio 2015.Il se produit seulement quand vous annulez vos changements avant de tirer de nouveaux changements. Ce problème ne semble pas être existant dans Visual Studio 2017.

0
répondu Rachit Chauhan 2018-08-16 04:54:19

cela arrive même parfois avec moi. Si vous utilisez Visual Studio, il est un moyen facile de faire votre chemin clair.

pour Visual Studio 2013 et au-dessus, suivez les instructions suivantes car cela a fonctionné pour moi:

  • allez au menu outils NuGet Package Manager Console du Gestionnaire de paquets .
  • Type git reset et appuyez sur entrez

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

VS2015: outils > Nuget Package Manager > Package manager console. A travaillé comme un charme. Grâce.

0
répondu Yagnesh Khamar 2018-08-30 09:27:32