Heim > Technologie-Peripheriegeräte > IT Industrie > 5 Möglichkeiten, Fehler mit Git rückgängig zu machen

5 Möglichkeiten, Fehler mit Git rückgängig zu machen

Joseph Gordon-Levitt
Freigeben: 2025-02-10 12:19:08
Original
756 Leute haben es durchsucht

5 Ways to Undo Mistakes with Git

Softwareentwicklung, egal wie erfahren es ist, es ist unvermeidlich, Fehler zu machen. Der Unterschied zwischen einem guten Programmierer und einem gewöhnlichen Programmierer besteht jedoch darin, dass sie wissen, wie man Fehler revokiert!

Wenn Sie Git als Versionskontrollsystem verwenden, verfügen Sie bereits über eine leistungsstarke Reihe von "Rückgängigentools". Dieser Artikel zeigt Ihnen fünf leistungsstarke Möglichkeiten, um Fehler mit Git rückgängig zu machen!

Schlüsselpunkte

    Git ermöglicht es Benutzern, Fehler im Code rückgängig zu machen, indem unerwünschte lokale Änderungen abgeworfen werden. Dies kann mit dem Befehl
  • erfolgen, der die Datei in den letzten engagierten Zustand zurücksetzt. Für eine stärkere körnige Kontrolle können Sie das git restore Flag verwenden, um Änderungen auf Patch -Ebene zu verwerfen. -p Der Befehl
  • kann verwendet werden, um eine bestimmte Datei in einer bestimmten Version wiederherzustellen. Der Benutzer kann das "Fehler -Commit" einer beschädigten Datei identifizieren und dann den Befehl git log verwenden, um die Datei vor dem falschen Commit in eine Version wiederherzustellen. git checkout
  • Gits
  • Tool kann verwendet werden, um verlorene Versionen oder gelöschte Zweige wiederherzustellen. Reflog zeichnet die Bewegung aller Kopfzeiger im lokalen Repository auf, sodass der Benutzer zum vorherigen Status zurückkehren und verlorene Daten wiederherstellen kann. Reflog
  • Benutzer können den Befehl
  • verwenden, um das Leitfaden in einen anderen Zweig zu verschieben. Wenn sich das Commit für die falsche Filiale befindet, kann der Benutzer die richtige Filiale überprüfen, die Vergangenheit verschieben und dann git cherry-pick verwenden, um das unerwünschte Commit aus dem ursprünglichen Zweig zu löschen. git reset
Einige lokale Änderungen verwerfen

Der Codierungsprozess ist normalerweise verwirrend. Manchmal fühlt es sich wie zwei Schritte nach vorne und einen Schritt zurück. Mit anderen Worten: Ein Teil des Code, den Sie schreiben, ist großartig… aber einige sind es nicht. Hier kann Git Ihnen helfen: Sie können die guten Teile aufbewahren und Änderungen entsorgen, die Sie nicht mehr benötigen.

Schauen wir uns ein Beispielszenario an, das einige "lokale" Änderungen enthält (d. H. Änderungen, die noch nicht eingereicht wurden).

5 Ways to Undo Mistakes with Git

Hinweis: Für einen besseren Überblick und eine bessere Visualisierung habe ich den Tower Git -Desktop -Client in einigen Screenshots verwendet. Sie brauchen keinen Turm, um dieses Tutorial zu lernen.

Lassen Sie uns zuerst das Problem in

lösen. Die Änderungen, die wir vorgenommen haben, gingen vollständig in die falsche Richtung. Lassen Sie uns alle Änderungen rückgängig machen und den letzten Commit -Status der Datei neu erstellen: general.css

$ git restore css/general.css
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Bitte beachten Sie, dass oder ich den Befehl

verwenden kann, um dasselbe Ergebnis zu erzielen. Da jedoch git checkout viele verschiedene Verwendungen und Bedeutungen hat, bevorzuge ich den Befehl leicht aktualisiert git checkout (es konzentriert sich nur auf diese Arten von Aufgaben). git restore

Unsere zweite Frage in

ist etwas schwierig. Einige der Änderungen, die wir in dieser Datei vorgenommen haben, sind tatsächlich gut, und nur ein Teil muss undokumentiert sein. index.html

5 Ways to Undo Mistakes with Git

Gleiches löst der Befehl git restore das Problem - diesmal müssen Sie das -p -Flag verwenden, da wir tief in das "Patch" -Legel einsteigen werden:

$ git restore css/general.css
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Git führt Sie dann an und fragen Sie Sie - für jede Änderung in in dieser Datei -, wenn Sie sie verwerfen möchten.

5 Ways to Undo Mistakes with Git

Sie werden feststellen, dass ich "n" für den ersten Blockänderung (um es beizubehalten) und "y" für die zweite Blockänderung (um ihn zu verwerfen) tippt. Sobald der Vorgang abgeschlossen ist, werden Sie feststellen, dass nur das erste Stück wertvoller Änderungen übrig geblieben ist - wie wir wollten!

Eine bestimmte Datei in ihren vorherigen Status zurücksetzen

Manchmal möchten Sie die

spezifische -Patei in der -Spedikatoren -Version wiederherstellen. Zum Beispiel wissen Sie, dass irgendwann in der Vergangenheit gut funktioniert hat, aber nicht jetzt. Zu diesem Zeitpunkt möchten Sie die Zeit zurückgehen, aber nur für diese bestimmte Datei, nicht für das gesamte Projekt! index.html

Wir müssen zuerst herausfinden, welche genaue Version wir wiederherstellen möchten. Mit dem korrekten Parametersatz können Sie den Befehl

den Verlauf Ihrer einzelnen Datei anzeigen: git log

$ git restore -p index.html
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5 Ways to Undo Mistakes with Git

Dies zeigt nur die

geänderten Commits, was sehr nützlich ist, um die Version "Bad Apple" zu finden, die das Problem verursacht. index.html

Wenn Sie weitere Informationen benötigen und den Inhalt dieser Commits

anzeigen möchten, können Sie das Flag verwenden, um die tatsächlichen Änderungen in diesen Commits anzuzeigen: -p

$ git log -- index.html
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Sobald wir das falsche Commit gefunden haben, das dazu führte, dass unsere süße kleine Datei beschädigt wurde, können wir den Fehler beheben. Wir werden dies tun, indem wir die

-Version der Datei vor dem Commit wiederherstellen! Dies ist wichtig: Anstatt die Datei im falschen Commit wieder aufzunehmen, stellen wir den letzten guten Staat wieder her-den vor dem Commit!

$ git log -p -- index.html
Nach dem Login kopieren
Nach dem Login kopieren
teilnehmen

zum Hash -Wert des falschen Commits wird Git angewiesen, Folgendes zu tun: Gehen Sie zu einer Version des referenzierten Commit ~1 vor .

Nachdem Sie diesen Befehl ausgeführt haben, werden Sie feststellen, dass

in Ihrem lokalen Arbeitskopie geändert wurde: Git hat die letzte gute Version der Datei für uns wiederhergestellt! index.html

Lost -Versionen mit Reflog

wiederherstellen

Ein weiteres leistungsstarkes Rückgängiggut im Git ERSTE AID -KIT ist "Reflog". Sie können es sich als Protokoll vorstellen, in dem Git alle Kopfzeigerbewegungen im lokalen Repository aufzeichnet-wie Commit, Checkout, Merge und Rebase, Cherry-Pick und Reset. Die wichtigeren Operationen werden hier gut aufgezeichnet!

Natürlich sind solche Protokolle perfekt für Situationen, in denen die Dinge nicht gut laufen. Lassen Sie uns zuerst eine kleine Katastrophe erstellen - dann können wir sie mit Reflog beheben.

Angenommen, Sie sind sicher, dass Ihre letzten Commits nicht gut sind: Sie möchten sie loswerden, also haben Sie git reset verwendet, um zur vorherigen Version zurückzukehren. Infolgedessen verschwand das "Fehler" -Kommittel aus Ihrer Feststellungsgeschichte - wie Sie es möchten.

5 Ways to Undo Mistakes with Git

Aber wie das Leben manchmal merkt man, dass es eine schlechte Idee ist: Letztendlich sind diese Einsendungen nicht so schlimm! Aber die schlechte Nachricht ist, dass Sie sie gerade aus der Verlaufsgeschichte Ihres Repositorys gelöscht haben! ?

5 Ways to Undo Mistakes with Git

Dies ist ein klassischer Fall von Gits Reflog -Tool! Mal sehen, wie es Sie rettet:

$ git restore css/general.css
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5 Ways to Undo Mistakes with Git

lass es uns nacheinander brechen:

  • Erstens ist Reflog sehr leicht zu öffnen: Ein einfacher git reflog reicht aus.
  • Zweitens werden Sie feststellen, dass der aufgezeichnete Status in chronologischer Reihenfolge mit dem neuesten Status an der Spitze sortiert ist.
  • Wenn Sie genau hinschauen, werden Sie feststellen, dass das oberste (dh das neueste) Projekt ein "Reset" -Operation ist. Genau das haben wir vor 20 Sekunden gemacht. Offensichtlich ist dieses Protokoll gültig?
  • Wenn wir jetzt unseren unbeabsichtigten "Reset" rückgängig machen wollen, können wir einfach in unseren vorherigen Zustand zurückkehren - dies ist auch hier gut dokumentiert! Wir können einfach den Commit -Hash dieses vorherigen Zustands in die Zwischenablage kopieren und davon beginnen.
Um diesen vorherigen Zustand wiederherzustellen, können wir

erneut verwenden oder einfach einen neuen Zweig erstellen: git reset

$ git restore -p index.html
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5 Ways to Undo Mistakes with Git

Wie wir gerne überprüfen können, enthält unsere neue Zweigstelle Commits, von denen wir glauben, dass sie durch ein unerwartetes

Misserfolg verloren sind! git reset

gelöste Äste

wiederherstellen

Reflog kann in anderen Situationen auch nützlich sein. Wenn Sie beispielsweise versehentlich einen Zweig löschen, den Sie nicht wirklich löschen sollten. Schauen wir uns unser Beispielszenario an:

$ git log -- index.html
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nehmen wir an, unser Kunden-/Teamleiter/Projektmanager sagt uns, dass die schöne Analyse, die wir entwickelt haben, nicht mehr benötigt werden. Wir sind gut organisiert und natürlich werden wir den entsprechenden

Zweig löschen! feature/analytics

Oben können Sie sehen, dass wir in unserem Beispielszenario den Zweig derzeit überprüft haben:

ist unser aktueller Head -Zweig. Um es löschen zu können, müssen wir zuerst zu einem anderen Zweig umstellen: feature/analytics

$ git restore css/general.css
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Git sagt uns, dass wir etwas sehr Ernstes tun sollen: Da feature/analytics einzigartige Commits enthält, die anderswo nicht existieren, wird es einige (wahrscheinlich wertvolle) Daten zerstören. Ok ... da diese Funktion nicht mehr benötigt wird, können wir fortfahren:

$ git restore -p index.html
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie haben vielleicht erwartet, was als nächstes passieren wird: Unser Kunden-/Teamleiter/Projektmanager sagt uns glücklich, dass die Funktion zurück ist! ? Sie wollen nach allem weitermachen! ?

In ähnlicher Weise stehen wir vor einer schlechten Situation, in der wir möglicherweise wertvolle Daten verloren haben! Mal sehen, ob Reflog uns wieder retten kann:

$ git log -- index.html
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

5 Ways to Undo Mistakes with Git

Wenn Sie genau hinschauen, sind die guten Nachrichten offensichtlich. Bevor wir (katastrophal) unseren Zweig löschen können, müssen wir git checkout zu einem anderen Zweig umstellen (da Git Sie nicht erlauben, den aktuellen Zweig zu löschen). Natürlich wird diese Kasse auch in Reflog aufgezeichnet. Um den von uns gelöschten Zweig wiederherzustellen, können wir jetzt einfach den Status von vor als Ausgangspunkt für den neuen Zweig verwenden:

$ git log -p -- index.html
Nach dem Login kopieren
Nach dem Login kopieren

schauen: Unser Zweig ist wieder zum Leben erweckt! ???

Wenn Sie zufällig einen Desktop -GUI -wie -Turm verwenden, ist es normalerweise so einfach, solche Fehler zu rückgängigen wie das Drücken von cmd z .

5 Ways to Undo Mistakes with Git

Verschmelzung an verschiedene Zweige

Schauen wir uns schließlich einen klassischen Fall der Abteilung "Oh, nein!"

Heute haben viele Teams eine Regel formuliert, die die direkte Einreichung bei Langzeitzweigen wie "Main", "Master" oder "entwickeln" verbietet. Normalerweise sollten neue Commits diese Zweige nur durch Zusammenführen/Rebase erreichen. Wir vergessen und reichen jedoch manchmal direkt nach ...

Nehmen wir das folgende Szenario als Beispiel.

5 Ways to Undo Mistakes with Git

Wir hätten über feature/newsletter einreichen sollen, aber versehentlich den Commit in der master -Ast ausgelöst. Schauen wir uns Schritt für Schritt die Lösung an.

Zunächst müssen wir sicherstellen feature/newsletter

Jetzt können wir das Commit mit dem Befehl
$ git checkout <bad-commit-hash>~1 -- index.html
Nach dem Login kopieren
sicher verschieben:

cherry-pick

Wir können
$ git reflog
Nach dem Login kopieren
überprüfen und werden sehen, dass das Commit jetzt auch hier vorhanden ist.

feature/newsletter

Bisher lief alles gut. Aber cherry-pick löscht den Commit aus dem master -Ast nicht (es sollte nicht da sein). Also müssen wir dort auch unser Chaos aufräumen:

Wir wechseln zurück zu
$ git restore css/general.css
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
und verwenden

, um unerwünschte Commits aus der Geschichte zu löschen. master git reset Ende, alles kehrte zu normalem zurück. So können Sie jetzt Ihren fröhlichen Tanz beginnen! ???

Fehler entspannen ist eine Supermacht

Ich habe es schon einmal gesagt, und leider wissen wir alle, dass es wahr ist: Wir können Fehler nicht vermeiden! Egal wie gut wir Programmierer sind, wir werden es ab und zu durcheinander bringen. Die Frage ist also nicht, ob wir Fehler machen, sondern wie wir effektiv damit umgehen und Probleme lösen?

Wenn Sie mehr über Git -Rückgänger -Tools erfahren möchten, empfehle ich das "Git First Aid Kit". Dies ist eine (kostenlose) kurze Videosammlung, die Ihnen zeigt, wie Sie Fehler in Git aufräumen und rückgängig machen. Ich wünsche Ihnen eine reibungslose Entwicklung, einen Mut zu versuchen, und natürlich müssen Sie gut reparieren! FAQs über die Verwendung von Git zum Rückgängigmachen von Fehlern (FAQ)

Was ist der Unterschied zwischen

und

?

und

sind zwei Befehle, die Ihnen helfen, die Änderungen in Ihrem Git -Repository rückgängig zu machen, aber sie funktionieren unterschiedlich. git reset Bewegen Sie Ihren Kopfzeiger auf ein bestimmtes Commit. Dies bedeutet, dass es tatsächlich alle Commits, die Sie nach dem Rücksetzen auf das Commit haben, "vergessen" haben. Dies ist eine zerstörerische Operation und sollte mit Vorsicht verwendet werden. Auf der anderen Seite schafft git revert ein neues Verpflichtung, die Änderungen in einem bestimmten Komitee rückgängig zu machen. Dies ist ein sicherer Betrieb, da sie die bestehende Geschichte nicht ändert.

Wie kann man die git reset -Operation rückgängig machen? git revert git reset Wenn Sie bereits git revert verwendet haben, um die Änderungen zu speichern und dies rückgängig zu machen, können Sie den Befehl

verwenden. Wenn Sie beispielsweise eine bestimmte Datei stapeln möchten, können Sie den Befehl

verwenden. Wenn Sie alle Änderungen stapeln möchten, können Sie git add verwenden, ohne die Datei anzugeben.

Kann ich git add rückgängig machen? git reset git reset <file></file> Ja, Sie können mit dem Befehl git reset oder

rückgängig machen.

Verschieben Sie Ihren Kopfzeiger zurück zu dem Commit, den Sie rückgängig machen möchten, und löschen Sie unerwünschte Commits effektiv. Andererseits wird git commit ein neues Verpflichtung erstellen, um die Änderungen im unerwünschten Commit rückgängig zu machen.

Wie können Sie Änderungen in einer bestimmten Datei rückgängig machen? git reset git revert Wenn Sie Änderungen an einer bestimmten Datei vorgenommen haben und diese Änderungen rückgängig machen möchten, können Sie den Befehl git commit verwenden. Beispielsweise verwerfen git reset Änderungen im lokalen Arbeitsverzeichnis der angegebenen Datei. git revert

git stash Was ist das?

git stash ist ein Befehl, mit dem Sie Änderungen vorübergehend speichern können, die Sie nicht sofort einreichen möchten. Dies ist nützlich, wenn Sie zu einem anderen Zweig wechseln müssen, aber die aktuelle Änderung nicht begehen möchten. Sie können die temporären Änderungen später mit git stash apply anwenden.

Wie kann ich meine Git -Geschichte betrachten?

Sie können den Befehl git log verwenden, um Ihren Git -Verlauf anzuzeigen. Dies zeigt Ihnen eine Liste aller Commits im Repository sowie deren Commit -Nachrichten.

Kann ich git push rückgängig machen?

Ja, Sie können git push rückgängig machen, aber dies ist etwas komplizierter als die Rückgängigmachung lokaler Änderungen. Sie müssen den Befehl -f mit den Optionen --force oder git push verwenden, um das Remote -Repository mit Ihrem lokalen Repository zu überschreiben. Seien Sie vorsichtig mit diesem Befehl, da dies anderen Personen, die sich mit demselben Repository befassen, Probleme verursachen können.

Wie kann man mehrere Commits rückgängig machen?

Wenn Sie mehrere Commits rückgängig machen möchten, können Sie den Befehl git reset und die HEAD~<number></number> -Syntax verwenden. Zum Beispiel bewegt git reset HEAD~3 Ihren Kopfzeiger vor drei Commits zurück.

Was ist der Unterschied zwischen weichem Reset und hartem Zurücksetzen?

Soft Reset verschiebt Ihren Kopfzeiger auf ein bestimmtes Commit, ändert jedoch nicht Ihr Arbeitsverzeichnis und Ihr Staging -Bereich. Dies bedeutet, dass Sie immer noch Änderungen von "vergessenen" Commits als nicht verbindliche Änderungen sehen. Auf der anderen Seite wird ein hartes Reset alle Änderungen im Arbeitsverzeichnis und im Staging -Bereich verwerfen und Ihr Repository zum Zeitpunkt des angegebenen Commits effektiv wieder in den Staat wiederherstellt.

Kann ich das Commit nach einem harten Zurücksetzen wieder aufnehmen?

Ja, Commits können nach einem harten Zurücksetzen wieder aufgenommen werden, aber es ist nicht einfach. Git hält Protokolle für alle REF -Updates (z. B. bewegte Kopfzeiger) im Reflog. Sie können den Befehl git reflog verwenden, um das Commit zu ermitteln, das Sie wiederherstellen möchten, und dann git branch einen neuen Zweig bei diesem Commit zu erstellen.

Das obige ist der detaillierte Inhalt von5 Möglichkeiten, Fehler mit Git rückgängig zu machen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage