webentwicklung-frage-antwort-db.com.de

TFS/GIT in VS Kann nicht zum Master wechseln, da nicht festgeschriebene Änderungen vorliegen

Ich habe ein GIT-Repository für eine VS 2013-Lösung auf visualstudio.com eingerichtet. Das Repository funktionierte hervorragend, während ich mich an die Verwendung von TFS (im GIT-Modus) gewöhnte.

Dann beschloss ich, mich mit Branches vertraut zu machen, also habe ich einen Zweig vom Master erstellt. Ich habe in dieser Branche einige Änderungen vorgenommen. Ich habe die Änderungen im Laufe der Zeit festgeschrieben und eine Synchronisierung durchgeführt, um meine lokalen Commits in das Repository von visualstudio.com zu verschieben. Das alles funktioniert.

Das Problem, das ich habe, ist, dass ich irgendwie die Möglichkeit verloren habe, wieder in den Master-Zweig zu wechseln. Ich kann meinen neu erstellten Zweig nicht mit dem Master zusammenführen. Jedes Mal, wenn ich versuche, etwas zu tun, das den Master betrifft, erhalte ich in VS die folgende Fehlermeldung:

Kann nicht zum Master wechseln, da nicht festgeschriebene Änderungen vorhanden sind. Übernehmen oder machen Sie Ihre Änderungen rückgängig, bevor Sie die Zweigstellen wechseln. Einzelheiten finden Sie im Ausgabefenster.

Das Ausgabefenster enthält niemals "Details" ...

Auf welche "nicht festgeschriebenen Änderungen" bezieht sich diese Nachricht? Da ich nicht in die Hauptbranche einsteigen kann, kann ich keine Änderungen vornehmen (oder bin ich mir nicht sicher, ob ich das möchte?). Und der aktuelle (nur andere) Zweig, in dem ich mich befinde, wurde festgelegt und synchronisiert.

Ich lerne wirklich nur TFS, GIT und Quellcodeverwaltung. Wie gehe ich sicher von diesem Problem?

31
rwkiii

Okay, ich hatte selbst das gleiche Problem wie rwkiii - dies ist ein Fehler in Visual Studio und nicht einfach zu beheben. Hier sind die Symptome:

Visual Studio gibt an, dass Sie braches/etc nicht zusammenführen/wechseln können. weil Sie nicht festgeschriebene Änderungen vorgenommen haben - was in Ordnung ist, außer dass alle Ihre Änderungen wurden festgeschrieben wurden.

Wechsel zum Master nicht möglich, da nicht festgeschriebene Änderungen vorliegen. Übernehmen Sie Ihre Änderungen oder machen Sie sie rückgängig, bevor Sie die Filiale wechseln. Weitere Informationen finden Sie im Ausgabefenster.

hier ist ein Screenshot, um klarer zu sein.

Wenn Sie sich das Ausgabefenster ansehen, erscheint es möglicherweise leer, aber Sie müssen "Ausgabe anzeigen von" in "Quellcodeverwaltung - Git" ändern. Dies listet die Datei auf, die Visual Studio denkt geändert hat.

Make sure "Source Control - Git" is selected

Nun, Dinge, die ich ausprobiert habe , haben das Problem nicht behoben (Sie müssen es also nicht tun):

  • Starten Sie Visual Studio neu
  • Maschine neu starten
  • Projekte wechseln
  • Verwendung externer Git-Tools (alle ohne Änderungen)
  • git Reset
  • Nehmen Sie willkürliche Änderungen an der Datei vor und legen Sie diese fest. Commits ok, VS denkt immer noch, dass es weitere Änderungen gibt

Am Ende musste ich gehen und die Datei von der Festplatte löschen und dann diese Änderung im Team Explorer-Fenster "rückgängig machen":

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

Nicht die idealste Lösung, aber es scheint, es zu beheben.

47
Kushan

Ich habe den Befehl git Prompt verwendet, um das Problem zu beheben. Ich kann nicht garantieren, dass dies der beste Weg oder der einzige Weg ist, aber es funktionierte für mich in Visual Studio 2013.

Wählen Sie unter Änderungen im Team-Explorer Eingabeaufforderung öffnen .

Geben Sie im Befehl Eingabeaufforderung Folgendes ein: 

git-Status

Es werden die Dateien aufgelistet, die zur Änderung geöffnet sind.

Kopieren Sie diese Dateien (nur für den Fall), dann können Sie die Änderungen im Arbeitsverzeichnis in der Eingabeaufforderung verwerfen. 

git checkout - mysubdir\meinedatei.ext

Versuchen Sie nicht, Zweige in Visual Studio zu ändern. Es funktioniert trotzdem nicht!

Wechseln Sie stattdessen bei der Eingabeaufforderung zum betreffenden Zweig.

git checkout branchname

Wenn Sie zu Visual Studio zurückkehren, werden Sie aufgefordert, das Projekt erneut zu laden. Danach wird der Zweig korrekt auf den Zweig aktualisiert, den Sie in der Befehlszeile ausgewählt haben.

hth

28
Baron

Ich habe ein ähnliches Problem gelöst, ohne eine Datei löschen oder neue Änderungen vornehmen zu müssen.

Nachdem ich BranchA geändert, mit Master zusammengeführt und via Git-Bash gepusht hatte, zeigte das nächste Mal, wenn ich das Projekt in VS öffnete und Team Explorer ansah, dass es Änderungen im Master-Zweig gab. Beim Überprüfen des Status über die Git-Bash wurden keine Änderungen angezeigt, aber 10 Dateien wurden in VS Output aufgelistet. Unterschiede bei allen Dateien zeigten keine Änderungen. Ich habe an dieser Stelle versucht, eine Commit-Änderung durchzuführen, aber ich würde die vorherige Commit-Änderung nicht ändern (mehr dazu weiter unten, da dies mein Problem letztendlich beheben wird).

Versuchte in BranchA zu BranchA zu wechseln und erhielt die Meldung, dass ich aufgrund nicht festgeschriebener Änderungen nicht wechseln kann. Wechseln Sie über Git-Bash zu BranchA, und der Status zeigt keine Änderungen. Aktualisieren Sie VS Team Explorer so, dass es sich jetzt auf BranchA befindet. Es werden 14 Änderungen an der Datei angezeigt, sogar mehr als beim Master. Die Unterschiede in allen Dateien zeigten jedoch keine Änderungen.

Während ich in Branch Explorer auf BranchA war, habe ich auf Aktionen-> Vorheriges Commit ändern geklickt. Diesmal ließ es zu, dass alle Änderungen gelöscht wurden. Es zeigte dann ein ausstehendes Commit, aber das Überprüfen des Status in Git-bash zeigte nichts aus. Daher wurde die ausstehende Commit-Nachricht gelöscht, wenn Sie in Team Explorer nach Hause gehen und zurückkehren.

In Team Explorer zum Master gewechselt, werden dort auch keine Änderungen mehr angezeigt. Alles ist gut.

3
javovo

Nicht festgeschriebene Änderungen bedeutet, dass Sie eine oder mehrere Dateien geändert haben, die bereits zu git hinzugefügt wurden, und diese Änderungen nicht in einem Commit oder in Ihrem Git-Speicher "gespeichert" wurden.

Wenn Sie zwischen Zweigen wechseln, dürfen Sie keine nicht festgeschriebenen Änderungen vornehmen (neue Dateien, die nicht zu git hinzugefügt wurden, sind jedoch in Ordnung), da Änderungen in anderen Zweigen Ihre nicht festgeschriebenen Änderungen überschreiben können.

Ich bin nicht vertraut mit der Integration von Visual Studio mit git, wie ich selbst PoshGit mit Powershell verwende

Der Weg, um fortzufahren, ist:

  • Machen Sie Ihre Änderungen rückgängig
  • Übernehmen Sie Ihre Änderungen
  • Oder Ihre Änderungen verwahren (siehe Abschnitt Workflow unterbrechen).
2
Asser

Hallo das hat den Trick für mich gemacht ...

Versuchen Sie es mit dem Befehl Prompt Team Explorer> Unsynced Commit> Aktionen> Eingabeaufforderung öffnen

Machen Sie eine git checkout branchName

2
Jen

Ich habe ein paar Mal bemerkt, dass einige Elemente als geändert markiert sind, im Solution Explorer jedoch nicht so angezeigt werden. Was ich getan habe, als andere vorgeschlagen haben, ist in der Eingabeaufforderung, 

git status (this should show you culprit files)

fügen Sie dann die einzelnen Dateien hinzu. Oder was ich persönlich tue, ist:

git add -A 

dadurch werden alle geänderten Dateien hinzugefügt, um sie in Team Explorer anzuzeigen. Dort können Sie sie nach Belieben rückgängig machen oder löschen. Ich hatte mit diesem Ansatz kein Problem. 

1
WiseGuy

Wir stoßen regelmäßig auf dieses Problem, weil wir eine bestimmte Datei haben, die immer von Änderungen ausgeschlossen werden muss, aber irgendwann geändert wird.

Was für uns funktioniert, wenn die Fehlermeldung erscheint:

  1. Schauen Sie in VS im Fenster Output nach, welche Datei das Problem verursacht.
  2. In Git-Bash-Lauf git update-index --no-assume-unchanged TheNameOfTheFileCausingTheIssue
  3. In VS Undo Checkout in dieser Datei
  4. In VS den Zweig wechseln in Zweige verwalten .

Dies funktioniert möglicherweise nicht für Ihre Situation, aber ich habe es hinzugefügt, falls es jemanden in die richtige Richtung lenkt. Vergewissern Sie sich, dass Sie den Befehl git verstanden haben, bevor Sie ihn ausführen!

1
Dib

Eine Sache, die für mich gearbeitet hat:
1) Klicken Sie mit der rechten Maustaste auf den Zweig, den Sie auschecken möchten.
2) Klicken Sie auf die Option Zurücksetzen.
3) Klicken Sie auf die Schaltfläche Delete Changes (--hard).
4) Klicken Sie mit der rechten Maustaste auf den Zweig und wählen Sie "Kasse" aus

0
RAX

Ich hatte dieses Problem, nachdem ich einen Dateinamen von einem Kleinbuchstaben in einen Großbuchstaben geändert hatte, nachdem ich die Datei bereits festgeschrieben hatte. Ich habe das Problem behoben, indem ich den Namen der Datei geändert habe (ich habe am Ende eine '1' hinzugefügt) und diese Änderung dann festgeschrieben. Ich konnte dann Zweige wechseln.

Wie oben erwähnt, musste ich die Option "Ausgabe anzeigen von:" in "Source Control - Git" im Ausgabefenster ändern, um den Namen der fehlerhaften Datei zu sehen, die dann zeigte, dass der Dateiname VS/git war Erwarten wurde nicht aktiviert, wobei der Name im Lösungs-Explorer/im Dateisystem aktiviert wurde.

0
tomRedox

Am Ende habe ich mein Problem gelöst, indem ich mein Repo aus dem Datei-Explorer gelöscht und dann aus Visual Studio heraus "Alle Änderungen rückgängig machen" ausgewählt habe, wenn sich die Löschvorgänge für das Commit angemeldet haben. Beim Wiederherstellen des Repos funktionierte Visual Studio wie erwartet zusammen mit git.

0
TheFastCat

Das Problem ist, dass manchmal nach dem Pull-Pfad einige Dateien nicht mit ihren Entsprechungen in der Repository-Datenbank übereinstimmen, da der Vergleich die Groß- und Kleinschreibung berücksichtigt.

Beispielsweise könnten Sie "MyLibrary\ABC\Folder\MyFile.cs" im Repository und "MyLibrary\Abc\Folder\MyFile.cs" auf der Festplatte haben. Es werden keine Änderungen in "git status" festgestellt, aber Visual Studio blockiert den Zweigwechsel.

Wenn Sie nur MyFile.cs von der Festplatte löschen, wird das Problem in diesem Fall nicht gelöst. Sie müssen das ABC-Verzeichnis löschen und die Änderungen rückgängig machen, damit Visual Studio die Ordnerstruktur mit den richtigen Namen wiederherstellt.

0
Michael Logutov

1: Öffnen Sie Git Bash

2: Zeigen Sie auf Ihr Git-Repository

3: Überprüfen Sie den Zweigstatus mit dem Befehl "git status"

wenn Sie die Wiederverwendbarkeit Ihrer Änderungen für einen anderen Zweig haben, verwenden Sie "git stash save", (Dadurch werden Ihre Änderungen lokal gespeichert, es kann zu einem Konflikt mit Konflikten kommen, Sie können .__ für jetzt ignorieren.) Wenn Sie eine nicht zusammengeführte Datei im git-Statusergebnis sehen und die Änderungen "git add <file path>" beibehalten möchten.

4: Sobald Ihre lokalen Änderungen gespeichert sind, verwenden Sie den Befehl "git reset --merge".

dadurch wird Ihre lokale Filiale auf die ursprüngliche Kasse zurückgesetzt. Jetzt können Sie .__ wechseln. In diesem Zweig sehen Sie möglicherweise die Konfliktdateien in team Explorer> Änderungen , Wenn Sie diese Datei nicht beibehalten möchten, klicken Sie mit der rechten Maustaste und wählen Sie Änderungen rückgängig machen oder verwenden Sie "git add <file path >", um diese Datei mit anderen gespeicherten Dateien hinzuzufügen.

5: Jetzt ist Ihr Git-Zweig bereit für den Wechsel, geben Sie "git checkout <branch path>" ein.

6: Wenn Sie gespeicherte Änderungen mit "git stash pop" öffnen möchten, werden die gespeicherten Änderungen in Ihrem aktuellen Zweig zusammengeführt.

0
Satendra Jindal