2017-10-21 2 views
0

Ich verwende Visual Studio Premium 2013 Update 5, um eine aus mehreren Projekten bestehende Lösung zu verwalten. Meine letzte erfolgreiche Teilnahme an Visual Studio Online war der Abend des 18. Oktober. Mein Computer hat am Morgen des 19. neu gestartet und eine Reihe von Microsoft-Updates installiert. Ich habe am 19. eine kleine Entwicklungsarbeit geleistet. Als ich meine Änderungen festgeschrieben habe, ist mir aufgefallen, dass die Option Commit nicht verfügbar war, als ich im Solution Explorer mit der rechten Maustaste auf die Lösung klickte.Visual Studio 2013 verfolgt keine Änderungen mehr mit Git mit Visual Studio Online

Bei der Untersuchung, warum ich einen Commit nicht machen kann, bemerkte ich das folgende Verhalten. Ich öffne eine Datei, führe eine Änderung durch und der rote Haken erscheint neben dem Dateinamen und die Datei erscheint unter Enthaltene Änderungen. Wenn ich die Datei speichere, verschwindet der rote Haken und die Datei verschwindet aus den Eingeschlossenen Änderungen. Da keine Änderungen von Git verfolgt werden, gibt es nichts, was in Visual Studio Online festgeschrieben werden kann. Mir ist auch aufgefallen, dass das Git Repo (/ Portal) für das Projekt im Bereich Team Explorer - Verbindungen verwalten - Lokale Git-Repositories fehlte.

Ich öffnete dann eine andere Lösung mit Visual Studio 2015 Ultimate Update 3 und ich bemerkte meine Git Repo (/ Portal) unter Verbindungen verwalten. Ich konnte dann einen Git Status machen und habe das folgende Problem gefunden. Siehe Bild unten.

Command Prompt

Seit meiner Git-Repo (/ Portal) fehlte, ging ich weiter eine die Lösung erneut Geklonten Visual Studio 2013 Visual Studio ein neues Git Repo erstellt (/ Portal 2) und es meint jetzt zeigt Original Repo (/ Portal) auch. Meine letzten Änderungen fehlen noch unter Eingeschlossene Änderungen, so dass es immer noch nicht richtig funktioniert.

In diesem Stadium bin ich nicht sicher, ob die beschädigte Datei das Problem ist oder wenn Update 5, das vor Monaten heruntergeladen wurde, aber am 19. oder 20. installiert wurde, ist das Problem.

UPDATE 1:

gestellte git fsck laufen. Hier sind die Ergebnisse.

Command Prompt showing git fsck results

UPDATE 2:

auf dem code_fodder Kommentar Basierend, ging ich weiter und testete eine Codeänderung machen die neue Repo mit (/ Portal 2). Es funktioniert wie erwartet. Ich habe eine Änderung an einer Datei vorgenommen, und der rote Check wurde nach dem Speichern der Datei weiterhin angezeigt. Ich habe auch Git Status ausgeführt und es gab keine gemeldeten Probleme.

UPDATE 3:

Die letzte Anweisung (git push -u Herkunft Anteil) erzeugt die folgenden Fehler.

Command Prompt showing git push -u origin share

Die Aktie Zweig wird auch von der Git UI fehlt.

Git UI image showing only the Master branch

Jede Hilfe ist sehr geschätzt.

+0

Haben Sie versucht, 'git fsck' auszuführen? –

+0

Ich habe es gerade ausgeführt. Bitte siehe Update 1. Danke! –

+0

Ich fand die Visual Studio Integration immer etwas verdächtig. Können Sie es in der Befehlszeile erneut klonen? 'git clone ', und versuche dann den git-status ... –

Antwort

1

Wenn Sie nach der Beschädigung des Objekts keine Dateien geändert haben, können Sie das lokale Repo (/ Portal) wiederherstellen.Detail Schritte wie folgt:

#In the directory for Portal 
rm -rf .git 
git init 
git remote add origin <repo URL> -f 
git reset origin/share 
git add . 
git commit -m 'recovery the last commit before the repo corrupt' 
git push -u origin share 

Nun werden die letzten Änderungen wurde Fern share Zweig gewonnen und geschoben.

Hinweis: der lokale master Zweig tatsächlich Tracking origin/share Zweig. Um dies zu vereinfachen, können Sie die lokale master in share Zweig umbenennen, indem Sie git branch -m share. Und um den Verlauf für Ihren entfernten Zweig master zu überprüfen, können Sie git checkout master verwenden.

Und das Wiederherstellungs-Commit nur auf der Oberseite Ihrer neuesten Commit (kein Problem mit Remote-Repo). Illustrieren Sie die folgenden Grafiken:

Angenommen Commit A war der letzte Commit, bevor der lokale Repo beschädigt wurde, als versucht wurde, Änderungen als commit B zu committen. Danach gibt es auch neue Änderungen in Ihrem Remote-Repo-Commit C. Die Commit Geschichte auf Remote-Repo wie folgt:

...---A---C share 

Nachdem Sie über Befehle ausführen, die verpflichten wiederhergestellt B' wird auf der Oberseite des neuesten C begehen. Der Commit-Verlauf lautet also:

...---A---C---B' share 
+0

Das ist ein cleverer Weg, um ein "kaputtes" Git Repo +1 zu umgehen:) –

Verwandte Themen