Wie entferne ich ein nicht gepushtes ausgehendes Commit in Visual Studio?


111

Ich habe versehentlich eine schrittweise Änderung in einem neuen Zweig in Visual Studio 2017 in mein lokales Repository verschoben. Es wurde nicht in das Remote-Repository verschoben. Ich möchte es loswerden, kann aber keinen Weg finden, dies zu tun. Ich habe von der lokalen Hauptniederlassung auf die neue Niederlassung umgestellt. Dann habe ich den neuen Zweig gelöscht. Aber ausgehende Commits zeigen es immer noch. Wie lösche ich es oder setze es zurück?

Geben Sie hier die Bildbeschreibung ein


Vielen Dank für diese Frage, ich hatte die gleiche Frage
Imran Rizvi

Antworten:


177

Öffnen Sie die Registerkarte "Verlauf" im Team Explorer auf der Kachel "Zweige" (klicken Sie mit der rechten Maustaste auf Ihren Zweig). Klicken Sie dann im Verlauf mit der rechten Maustaste auf das Commit vor dem Commit, das Sie nicht verschieben möchten, und wählen Sie Zurücksetzen. Dadurch wird der Zweig wieder auf dieses Commit verschoben und das zusätzliche Commit, das Sie vorgenommen haben, sollte entfernt werden. Um vor einem bestimmten Commit zurückgesetzt zu werden, müssen Sie daher dessen übergeordnetes Element auswählen.

Je nachdem, was Sie mit den Änderungen tun möchten, wählen Sie schwer , um sie lokal zu entfernen. Oder wählen Sie " Soft" , um das Commit rückgängig zu machen, aber Ihr Arbeitsverzeichnis mit den Änderungen in Ihrem verworfenen Commit zu verlassen.


22
Es lohnt sich, den Teil fett zu setzen, in dem ** Sie sich für RESET für die ELTERN des durcheinandergebrachten Commits entscheiden müssen ** - bizarrerweise bietet VS2017 direkt nach dem Festschreiben eine Menüoption, die das Zurücksetzen des Ziels beim Festschreiben ausführt Sie haben es gerade getan (ein No-Op) - Ich habe ein paar Minuten verbracht, bis ich Ihren Beitrag gefunden habe und festgestellt habe, dass ich das übergeordnete Commit zurücksetzen sollte. Die Menüoption "Zurücksetzen" ist etwas schlecht formuliert - hört sich so an Ein bestimmtes Commit zurücksetzen == bedeutet, dass es für dieses Commit verwendet werden sollte. Wenn es Reset To wäre, hätte ich es wohl schneller verstanden
Caius Jard

1
(@JH) Danke für die Antwort. .. atCJ Danke für den Kommentar. atJH Danke, dass du diesen Teil kühn gemacht hast ... atJeder ... das ist der Teil, an dem ich festgehalten habe ... und ich meine festgefahren. #freedom
granadaCoder

Die Benennung entspricht der Art und Weise, wie git den Befehl aufruft. Wenn Sie Dateien bearbeitet haben, werden diese ebenfalls zurückgesetzt. Wenn Sie Dateien bereitgestellt haben, werden diese ebenfalls zurückgesetzt. Aus diesem Grund wird auch das letzte Commit zurückgesetzt. Es wird auf dieses Commit zurückgesetzt.
Jessehouwing

1
Nützlich zu wissen. Vielen Dank für die Antwort
Rob C

Vielen Dank Helpssss
Ashish Kamble

69

Ich konnte keine einzige gute Antwort finden, die mir half, dieses Problem loszuwerden.

Angenommen, der Name des Zweigs, an dem Sie versehentlich Änderungen vorgenommen haben, lautet master. Die folgenden vier einfachen Schritte erwiesen sich für mich als eine Welt:

  1. Gehe zu Filialen
  2. Wählen oder erstellen Sie einen anderen Zweig als master
  3. Lokale / Arbeitsbereich-Version von löschen master
  4. Wechseln Sie zum Master von remotes/origin

5
Dies ist die Antwort, die funktioniert, Sie müssen dierevert
Sojim

2
Dies funktioniert, aber Sie stecken fest, wenn Sie nur einige (nicht alle) bestimmte Commits aus den ausgehenden Commits ausführen möchten.
KatariaA

1
Habe gerade ein paar Downvotes erhalten. Kommentare wären toll gewesen.
Chaos Legion

1
Funktioniert. Saubere, schnelle und einfache Lösung.
Tom Tom

2
OMG DANKE! Ich habe bis heute Abend noch nie 45 Minuten gebraucht, um Änderungen rückgängig zu machen. Ihr Kommentar rettet den Tag.
PBJ

3

Angenommen, Sie haben die letzten Änderungen auf den Server übertragen:

  1. Schließen Sie Visual Studio und löschen Sie Ihre lokale Kopie des Projekts
  2. Öffnen Sie Visual Studio, wechseln Sie zur Registerkarte Team Explorer und klicken Sie auf Verbindungen verwalten. (Stecker)
  3. Klicken Sie auf den Dropdown-Pfeil neben Verbindungen verwalten, Mit einem Projekt verbinden
  4. Wählen Sie das Projekt aus, bestätigen Sie den lokalen Pfad und klicken Sie auf die Schaltfläche Verbinden.

Sobald Sie das Projekt erneut öffnen, sollten sowohl Commits als auch Änderungen Null sein.


0

Wechseln Sie zur Registerkarte Team Explorer und klicken Sie auf Zweige. Wählen Sie in den Filialen Ihre Filiale aus Fernbedienungen / Herkunft. Sie möchten beispielsweise Ihren Hauptzweig zurücksetzen. Klicken Sie mit der rechten Maustaste auf den Hauptzweig in Fernbedienungen / Ursprung, wählen Sie Zurücksetzen und klicken Sie dann auf Änderungen löschen. Dadurch wird Ihr lokaler Zweig zurückgesetzt und alle lokal festgeschriebenen Änderungen werden entfernt.


0

Versuchen Sie, Ihren lokalen Hauptzweig auf Ihren Remote- / Ursprungs-Hauptzweig neu zu gründen und alle Konflikte in diesem Prozess zu lösen.


0

TL; DR:

Verwenden Sie git reset --soft HEAD~in der cmd aus dem Ordner .sln


Ich war heute damit konfrontiert und war überwältigt, was VSCodeauf so etwas hindeutet, während es der große Bruder Visual Studionicht tut.

Die meisten Antworten waren hilfreich; Wenn ich mehr Commits habe, die zuvor gemacht wurden, wäre es frustrierend, sie alle zu verlieren. Wenn VSCodees in einer halben Sekunde geschieht, sollte es nicht komplex sein.

Nur Jessehouwings Antwort kam einer einfachen Lösung am nächsten.


Angenommen, das unerwünschte Commit (s) war das letzte, das passiert ist. So habe ich es gelöst:

Gehe zu Team Explorer-> Sync. Dort würden Sie alle Commits sehen. ActionsDrücken Sie die Dropdown-Liste undOpen Command Prompt

unerwünschtes Commit-gelöstes Beispiel

Sie haben das cmd-Fenster aufgefordert, dort zu schreiben git reset --soft HEAD~. Wenn es mehrere unerwünschte Commits gibt, addieren Sie den Betrag nach dem ~(dh git reset --soft HEAD~5)


(Wenn Sie nicht verwenden git, überprüfen Sie die umgangssprachliche Verwendung).

Ich hoffe, es wird helfen, und hoffentlich wird das VS-Team es in der nächsten Version einbauen


-1

Sie haben hier zwei Möglichkeiten, um entweder alle ausgehenden Commits zu verwerfen oder bestimmte Commits rückgängig zu machen.

1- Verwerfen Sie alle ausgehenden Commits:

So verwerfen Sie alle ausgehenden Commits: Wenn Sie beispielsweise einen lokalen Zweig mit dem Namen master von einem entfernten Zweig haben, können Sie:

1- Benennen Sie Ihren lokalen Zweig vom Master in einen beliebigen Zweig um, damit Sie ihn entfernen können. 2- Entfernen Sie den umbenannten Zweig. 3- Erstellen Sie einen neuen Zweig vom Master

Jetzt haben Sie eine neue Niederlassung ohne Ihre Verpflichtungen.

2- Spezifisches Commit rückgängig machen : Um ein bestimmtes Commit rückgängig zu machen, müssen Sie das nicht benötigte zurücksetzen, indem Sie:

1- Doppelklicken Sie auf das nicht benötigte Commit. Doppelklicken Sie auf das nicht benötigte Commit. 2- Klicken Sie auf Zurücksetzen. Klicken Sie auf Zurücksetzen

Zu Ihrer Information, das zurückgesetzte Commit wird in der Historie Ihrer Commits mit dem zurückgesetzten Commit angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.