Ich habe ein Projekt, in dem ich lief git init
. Nach mehreren Commits habe ich festgestellt git status
, dass alles auf dem neuesten Stand ist und es keine lokalen Änderungen gibt.
Dann nahm ich mehrere aufeinanderfolgende Änderungen vor und erkannte, dass ich alles wegwerfen und zu meinem ursprünglichen Zustand zurückkehren wollte. Wird dieser Befehl es für mich tun?
git reset --hard HEAD
quelle
git checkout path/to/file
nur die lokalen Änderungen aufpath/to/file
git checkout .
undgit reset [--hard HEAD]
funktionierte nicht, ich musste ein tungit clean -fd
, um meine Änderungen rückgängig zu machen.git reset
setzt Ihre Änderungen nicht zurück,git reset --hard
tut das.Hinweis: Möglicherweise möchten Sie auch ausführen
wie
Entfernt keine nicht verfolgten Dateien, wobei git-clean alle Dateien aus dem verfolgten Stammverzeichnis entfernt, die nicht unter Git-Tracking stehen. WARNUNG - Seien Sie vorsichtig damit! Es ist hilfreich, zuerst einen Trockenlauf mit git-clean durchzuführen, um zu sehen, was gelöscht wird.
Dies ist auch besonders nützlich, wenn Sie die Fehlermeldung erhalten
Dies kann auftreten, wenn Sie mehrere Dinge tun. Eine davon ist das Aktualisieren einer Arbeitskopie, wenn Sie und Ihr Freund beide eine neue Datei mit demselben Namen hinzugefügt haben, diese jedoch zuerst in die Quellcodeverwaltung übernommen hat und Sie sich nicht darum kümmern, Ihre nicht verfolgte Kopie zu löschen .
In dieser Situation hilft Ihnen ein Trockenlauf auch dabei, eine Liste der Dateien anzuzeigen, die überschrieben werden würden.
quelle
Erneut klonen
.gitignore
(wie Build-Dateien)..gitignore
Es folgen weitere Befehle, die ich täglich vergesse.
Reinigen und zurücksetzen
.gitignore
(wie Build-Dateien)..gitignore
Sauber
.gitignore
(wie Build-Dateien)..gitignore
Zurücksetzen
.gitignore
(wie Build-Dateien)..gitignore
Anmerkungen
Testfall zur Bestätigung aller oben genannten Punkte (Bash oder Sh verwenden):
Siehe auch
git revert
neue Commits zu machen, die vorherige Commits rückgängig machengit checkout
um zu früheren Commits zurückzukehren (möglicherweise müssen Sie zuerst die obigen Befehle ausführen)git stash
wiegit reset
oben, aber Sie können es rückgängig machenquelle
git clean -f -d -x
: Wenn die Option -x angegeben ist, werden auch ignorierte Dateien entfernt. Dies kann zum Beispiel nützlich sein, um alle Build-Produkte aus GIT-Dokumenten zu entfernenWenn Sie alle Änderungen rückgängig machen UND mit dem aktuellen Remote-Master auf dem neuesten Stand sein möchten (z. B. stellen Sie fest, dass sich der Master-HEAD vorwärts bewegt hat, seit Sie ihn abgezweigt haben und Ihr Push "abgelehnt" wird), können Sie verwenden
quelle
origin
ingit reset --hard origin/master
(das funktioniert) - ohne es (dhgit reset --hard
) nichts verändert zu sein scheint.Schau in Git-Reflog. Es werden alle Zustände aufgelistet, an die es sich erinnert (Standard ist 30 Tage), und Sie können einfach den gewünschten auschecken. Zum Beispiel:
quelle
git rebase -i
schief gelaufen (es wurden einige Commits aufgrund eines Bearbeitungsfehlers gelöscht). Dank diesem Tipp bin ich wieder in einem guten Zustand!GEFAHR VORAUS: (Bitte lesen Sie die Kommentare. Wenn Sie den in meiner Antwort vorgeschlagenen Befehl ausführen, werden möglicherweise mehr gelöscht, als Sie möchten.)
Um alle Dateien einschließlich der Verzeichnisse vollständig zu entfernen, musste ich sie ausführen
quelle
Nachdem ich eine Reihe von Antworten gelesen und ausprobiert habe, habe ich verschiedene Randfälle gefunden, die bedeuten, dass sie manchmal die Arbeitskopie nicht vollständig bereinigen.
Hier ist mein aktuelles Bash-Skript dafür, das die ganze Zeit funktioniert.
Aus dem Stammverzeichnis der Arbeitskopie ausführen.
quelle
error: pathspec 'HEAD' did not match any file(s) known to git.
git checkout HEAD
git reset --hard
Setzt verfolgte Dateien zurück (inszeniert oder nicht),git clean -f -d
entfernt nicht verfolgte Dateien.git checkout -- HEAD
Warum brauchen wir das dann?einfach ausführen -
Es werden alle Ihre lokalen Änderungen entfernt. und Sie können es auch später verwenden, indem Sie - ausführen
quelle
git stash pop
würde automatisch die oberste Änderung für Sie entfernengit stash drop
um den neuesten Status zu entfernen, ohne auf die Arbeitskopie anzuwenden.Ich bin auf ein ähnliches Problem gestoßen. Die Lösung besteht darin
git log
, nachzuschlagen, welche Version des lokalen Commits sich von der Remote unterscheidet. (ZB ist die Version3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Verwenden Sie dann
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
, um die Änderung rückgängig zu machen.quelle
Ich habe nach einem ähnlichen Problem gesucht.
Wollte lokale Verpflichtungen wegwerfen:
Das Folgende auch:
Prüfen:
Jetzt gehen lokale Commits verloren, zurück zum ursprünglichen geklonten Zustand, Punkt 1 oben.
quelle
Möglicherweise möchten / müssen Sie Ihre Arbeit / Dateien nicht unbedingt in Ihrem Arbeitsverzeichnis speichern, sondern müssen sie einfach vollständig entfernen. Der Befehl
git clean
erledigt dies für Sie.Einige häufige Anwendungsfälle hierfür sind das Entfernen von Cruft , das durch Zusammenführungen oder externe Tools generiert wurde, oder das Entfernen anderer Dateien, damit Sie einen sauberen Build ausführen können.
Denken Sie daran, dass Sie bei diesem Befehl sehr vorsichtig sein sollten, da er dazu dient, Dateien aus Ihrem lokalen Arbeitsverzeichnis zu entfernen, die NICHT VERFOLGT sind. Wenn Sie nach dem Ausführen dieses Befehls plötzlich Ihre Meinung ändern, können Sie den Inhalt der entfernten Dateien nicht mehr sehen. Eine Alternative, die sicherer ist, ist die Ausführung
git stash --all
Dadurch wird alles entfernt, aber alles in einem Vorrat gespeichert. Dieser Vorrat kann später verwendet werden.
Wenn Sie jedoch wirklich alle Dateien entfernen und Ihr Arbeitsverzeichnis bereinigen möchten, sollten Sie ausführen
git clean -f -d
Dadurch werden alle Dateien und auch alle Unterverzeichnisse entfernt, die aufgrund des Befehls keine Elemente enthalten. Bevor Sie den
git clean -f -d
Befehl ausführen , sollten Sie ihn ausführenDies zeigt Ihnen eine Vorschau dessen, was nach der Ausführung entfernt wird
git clean -f -d
Hier finden Sie eine Zusammenfassung Ihrer Optionen von den aggressivsten bis zu den am wenigsten aggressiven
Option 1 : Entfernen Sie alle Dateien lokal (am aggressivsten)
Option 2 : Vorschau der oben genannten Auswirkungen (Vorschau der aggressivsten)
Option 3 : Alle Dateien verstauen (am wenigsten aggressiv)
quelle
Versuchen Sie dies, um alle Änderungen zurückzusetzen, die in der lokalen Verzweigung nicht festgeschrieben wurden
Aber wenn Sie einen Fehler wie diesen sehen:
Sie können zum Ordner '.git' navigieren und dann die Datei index.lock löschen:
Führen Sie zum Schluss erneut den Befehl aus:
quelle
Bei dieser Frage geht es mehr um das Zurücksetzen / Zurücksetzen eines breiteren Repositorys. Falls Sie jedoch daran interessiert sind, einzelne Änderungen rückgängig zu machen, habe ich hier eine ähnliche Antwort hinzugefügt:
https://stackoverflow.com/a/60890371/2338477
Antworten auf Fragen:
Wie man individuelle Veränderungen mit oder ohne Veränderung rückgängig macht, die in der Git-Geschichte erhalten bleiben
So kehren Sie zur alten Version zurück, um von demselben Status aus neu zu starten
quelle