TFS / GIT dans VS ne peut pas passer à master car il y a des changements non engagés

j'ai mis en place un dépôt GIT pour une solution VS 2013 sur visualstudio.com. Le dépôt a bien fonctionné pendant que je m'habituais à utiliser TFS (en mode GIT).

puis j'ai décidé de me familiariser avec les Branches, donc j'ai créé une branche à partir du maître. J'ai fait quelques changements dans cette branche. J'ai engagé les changements au fil du temps et j'ai réalisé une synchronisation pour pousser mes commits locaux vers le visualstudio.com dépôt. Tout cela fonctionne.

le problème que j'ai, c'est que j'ai perdu la possibilité de revenir à la branche principale. Je ne peux pas fusionner ma branche nouvellement créée dans le maître. Chaque fois que j'essaie de faire quelque chose qui implique le maître, J'obtiens L'erreur suivante dans VS:

ne peut pas passer à master car il y a des changements non engagés. Valider ou annuler vos modifications avant de changer de branches. Voir la fenêtre de Sortie pour plus de détails.

le La fenêtre de sortie ne contient jamais de "détails"...

à quels" changements non engagés " ce message fait-il référence? Puisque je ne peux pas entrer dans la branche principale je n'ai aucun moyen de commettre aucun de ses changements (ni suis-je sûr que je veux?). Et l'actuelle (seule autre) branche dans laquelle je suis a été engagée et synchronisée.

j'apprends juste le TFS, le GIT et le contrôle source. Comment puis-je me remettre de ce problème en toute sécurité?

31
demandé sur rwkiii 2014-11-12 13:46:57

12 réponses

OK, j'ai moi - même eu le même problème que rwkiii-c'est un bug Dans Visual studio et il n'est pas facile à corriger. Voici les symptômes:

Visual Studio déclare que vous ne pouvez pas fusionner/changer braches/etc. parce que vous avez des changements non engagés - ce qui est bien, sauf que tous vos changements ont ont été commis.

ne peut pas passer à master car il y a des changements non engagés. Valider ou annuler vos modifications avant de changer de branches. Voir la fenêtre de Sortie pour plus de détails.

Voici une capture d'écran pour être plus clair.

si vous regardez la fenêtre de sortie, elle peut sembler vide mais vous devez changer" afficher la sortie de "en"Source Control - Git". Ceci listera le fichier que Visual Studio pense que a des changements.

Make sure "Source Control - Git" is selected

Now, choses que j'ai essayé que n'a pas le réparer (donc vous n'avez pas à):

  • Redémarrer Visual Studio
  • redémarrage de la machine
  • Commutation Projets
  • utilisant des outils Git externes (tous "sans changement")
  • git reset
  • apporter des modifications arbitraires au fichier et le propager. Engage ok, VS pense encore il y a plus de changements

à la fin, j'ai dû aller et supprimer le fichier du disque, puis "annuler" ce changement de la fenêtre de L'Explorateur D'équipe:

Click "undo" to restore the file and your ability to switch branches

N'est pas la solution idéale, mais elle semble la corriger.

44
répondu Kushan 2014-12-17 08:27:01

j'ai utilisé la commande git pour résoudre le problème. Je ne peux pas garantir que c'est la meilleure ou la seule façon, mais cela a fonctionné pour moi Dans Visual Studio 2013.

sous changements dans L'Explorateur D'équipe, choisissez Open Command Prompt .

dans la commande Type prompt:

git status

Il liste les fichiers qui sont ouverts pour le changement.

copiez ces fichiers (juste au cas où), puis vous pouvez jeter les modifications dans le répertoire de travail dans l'invite de commande.

git checkout -- mysubdir\myfile.poste 151910920"

n'essayez pas de changer de branche dans Visual Studio, ça ne marchera pas!

au lieu de cela, à l'invite de commande, passez à la branche en question.

git checkout branchname

Lorsque vous revenez à Visual Studio, il vous invite à recharger le projet. Après cela la branche sera mise à jour correctement à la branche que vous avez choisie à partir de la ligne de commande.

hth

28
répondu Baron 2015-01-14 05:10:48

j'ai résolu un problème similaire sans avoir à supprimer un fichier ou faire de nouveaux changements.

après avoir effectué des changements sur BranchA, fusionné avec Master et poussé via Git bash, la prochaine fois que j'ai ouvert le projet dans VS et regardé Team Explorer, cela a montré qu'il y avait des changements sur la branche Master. Aucun changement n'est apparu lors de la vérification de l'état via Git bash, mais 10 fichiers ont été listés en sortie VS. Les Diffs sur tous les fichiers n'ont montré aucun changement. J'ai essayé un amendement d'engagement à ceci point, mais il ne me permettrait pas de modifier le commit précédent (voir plus à ce sujet ci-dessous, car finalement cela va résoudre mon problème).

a essayé de passer à BranchA dans VS et a reçu le message que je ne peux pas changer en raison de changements non engagés. Passez à BranchA via Git bash, et l'état ne montre aucun changement. Rafraîchir VS L'Explorateur D'équipe ainsi il est maintenant sur BranchA, montre 14 changements de dossier, même plus que le maître, mais encore, diffs sur tous les dossiers n'a montré aucun changement.

alors que BranchA dans Team Explorer, j'ai cliqué sur Actions->Modifier la propagation précédente. Cette fois, il a laissé cela se produire et tous les changements ont été effacés. Il a ensuite montré un commit en attente, mais la vérification de l'état sur Git bash n'a rien montré en attente, donc rentrer à la maison dans Team Explorer et revenir, effacé le message de commit en attente.

passe au maître dans L'Explorateur D'équipe, pas plus de changements montrant là non plus. Tout est bien.

3
répondu javovo 2016-07-21 15:10:39

modifications non-engagées signifie que vous avez modifié un ou plusieurs fichiers qui ont déjà été ajoutés à git et que ces modifications n'ont pas été "sauvegardées" dans un commit ou dans votre git stash.

lorsque vous passez d'une branche à l'autre, vous n'êtes pas autorisé à avoir des changements non engagés (les nouveaux fichiers qui n'ont pas été ajoutés à git sont très bien cependant) car des changements dans d'autres branches pourraient écraser vos changements non engagés.

Je ne suis pas familier avec la façon dont Visual Studio s'intègre avec git comme j'utilise moi-même PoshGit avec Powershell

La façon de procéder est de:

2
répondu Asser 2014-11-12 13:36:39

Salut ça a fait l'affaire pour moi...

essayez d'utiliser la commande prompt L'équipe de l'Explorateur > Unsynced commit > Actions > Ouvrez l'Invite de Commande

Do a git checkout branchName

2
répondu Selina 2016-10-14 02:25:41

j'ai remarqué quelques fois que les éléments sln sont marqués comme changés mais n'apparaissent pas de cette façon dans Solution Explorer. Ce que j'ai fait comme d'autres l'ont suggéré est dans l'invite de commande,

git status (this should show you culprit files)

puis Ajouter les fichiers individuels. Ou ce que j'ai personnellement faire est de lancer:

git add -A 

qui ajoutera tous les fichiers modifiés pour les afficher correctement dans L'Explorateur de L'équipe, où vous pouvez défaire/supprimer comme vous voulez. N'ai pas eu un problème avec cette approche.

1
répondu WiseGuy 2016-07-12 18:07:50

j'ai fini par résoudre mon problème en supprimant mon repo à L'intérieur de File Explorer, puis à L'intérieur de Visual Studio en sélectionnant" Annuler toutes les modifications " lorsque les suppressions se sont inscrites pour être commises. Lors de la restauration, Visual Studio a fonctionné comme prévu en tandem avec git.

0
répondu TheFastCat 2015-06-25 08:47:06

le problème est que parfois après le chemin de pull vers certains fichiers ne correspondent pas leur équivalent dans la base de données de dépôt parce que la comparaison est Cas-sensetive.

par exemple, vous pourriez avoir" MyLibrary\ABC\Folder\MyFile.cs" dans le dépôt, mais "MyLibrary\Abc\Dossier\Monfichier.cs" sur le disque. Aucun changement ne sera détecté dans "git status" mais Visual Studio bloquera le commutateur de branche.

effaçant juste mon fichier.cs du disque dans ce cas ne sera pas résoudre le problème - vous aurez besoin de supprimer le répertoire ABC et puis annuler les changements pour Visual Studio pour recréer la structure de dossier avec des noms corrects.

0
répondu Michael Logutov 2015-10-13 10:31:06

j'ai eu ce problème après avoir changé un nom de fichier à partir d'une lettre minuscule à une lettre majuscule après avoir déjà engagé le fichier. Je l'ai corrigé en modifiant le nom du fichier (j'ai juste ajouté un " 1 " sur la fin) et puis commettre ce changement. J'ai ensuite été en mesure de passer les branches.

comme mentionné ci-dessus, j'ai dû changer le 'Show output de:' combo en 'Source Control-Git' dans la fenêtre de sortie afin de voir le nom du fichier fautif, qui puis m'a montré que le nom de fichier VS/git attendait n'était pas capitalisé, où comme le nom dans l'Explorateur de solutions/sur le système de fichiers a été capitalisé.

0
répondu tomRedox 2016-09-01 17:46:01

nous sommes régulièrement confrontés à ce problème, parce que nous avons un dossier particulier qui doit toujours être exclu des modifications, mais qui peut parfois être modifié.

ce qui fonctionne pour nous lorsque le message d'erreur apparaît est:

  1. dans VS regardez dans la fenêtre Output pour voir quel fichier est à l'origine du problème.
  2. in Git bash run git update-index --no-assume-unchanged TheNameOfTheFileCausingTheIssue
  3. VS Annuler la commande sur ce fichier
  4. VS changer la branche Gérer les Branches .

cela peut ou ne peut pas fonctionner pour votre situation, mais je l'ai ajouté au cas où il met quelqu'un dans la bonne direction. s'il vous Plaît assurez-vous de comprendre la commande git avant de l'exécuter!

0
répondu Dib 2017-04-07 08:41:54

une chose qui a fonctionné pour moi est: -

1) clic Droit sur la branche que vous voulez extraire.

2) Cliquez sur l'option de Réinitialisation.

3) Cliquez sur les modifications de suppression (--dur)

4) clic droit sur la branche et sélectionner la sortie

0
répondu RAX 2018-04-18 07:12:31

j'ai fait face au même problème puis j'ai remarqué que les changements non engagés proviennent de projets différents. une fois que j'ai engagé ces changements, ça m'a permis de changer de branche.

-1
répondu user3787354 2016-05-27 23:48:18