1226 Stimmen

Wie kann ich nicht bestätigte Änderungen einschließlich Dateien und Ordner rückgängig machen?

Gibt es ein Git-Befehl, um alle nicht bestätigten Änderungen in einem Arbeitsverzeichnis und Index rückgängig zu machen und auch neu erstellte Dateien und Ordner zu entfernen?

2 Stimmen

2 Stimmen

Nun ja, ich habe alle unterschiedlichen und schwer zu merkenden Antworten unten gelesen, mit ihren Einschränkungen und Spezialfällen und "funktioniert nicht, wenn du xxx hast", und habe mich dafür entschieden, das gesamte Repository zu löschen, es zu klonen, um alle bearbeiteten und hinzugefügten Dateien zu entfernen. Es sind auch nur zwei Befehle. `rm -r projectdir; git clone xxx`. Für mich ist dies eine häufige Operation - ein Repository auschecken, damit herumspielen und dann wieder zu einem sauberen Checkout zurückkehren, um es bearbeiten zu können. Nicht ideal, aber funktioniert zu 100%. Hoffentlich wird es irgendwann einen einfachen Befehl dafür geben.

26voto

Fr0sT Punkte 2809
git clean -fd

hat nicht geholfen und neue Dateien blieben. Ich habe den gesamten Arbeitsbereich gelöscht und dann

git reset --hard

Siehe "https://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in-git/673420#673420" für den Rat, die Option -x zum Bereinigen hinzuzufügen:

git clean -fdx

Hinweis Die -x Flagge entfernt alle von Git ignorierten Dateien, also seien Sie vorsichtig (siehe die Diskussion in der Antwort, auf die ich verweise).

0 Stimmen

Was bedeutet -fdx? "Force, Verzeichnis und x bedeutet?

0 Stimmen

@AdiPrasetyo Die -x Flag entfernt auch alle ignorierten Dateien; das könnte einen unerwünschten Effekt haben, daher habe ich meine Antwort aktualisiert.

0 Stimmen

Ich kann immer noch nicht rebase. Ich erhalte den Fehler: Fehler: Zusammenführen der Änderungen fehlgeschlagen. Patch fehlgeschlagen bei 0003 Erstellen des Rückrufs. Die Kopie des fehlgeschlagenen Patches befindet sich in:

18voto

Josnidhin Punkte 12006

Ich denke, du kannst den folgenden Befehl verwenden: git reset --hard

0 Stimmen

Hhmm... Ich habe das gemacht, aber meine Dateien sind immer noch da. Sollte ich danach etwas tun?

2 Stimmen

Git reset setzt nur die nicht committeten Änderungen im Arbeitsverzeichnis zurück. Es wird die neuen Dateien und Ordner nicht entfernen. Ich bin mir nicht sicher, wie das mit git gemacht wird.

1 Stimmen

So, wenn wir ein Systemverzeichnis ändern, indem wir neue Dateien und Ordner hinzufügen, und dann möchten wir dieses Verzeichnis auf einen früheren Zustand zurücksetzen (ohne diese Dateien und Ordner), können wir das nicht mit git machen? Ist das Beste, was wir tun können, also Dateizustände zurückzusetzen? Aber sobald wir eine Datei erstellen, können wir diese Datei nicht entfernen, es sei denn, wir tun es manuell?

18voto

kgandroid Punkte 5459

Wenn Sie eine nicht bestätigte Änderung (sie ist nur in Ihrer Arbeitskopie) haben, die Sie zurücksetzen möchten auf die Kopie in Ihrem letzten Commit, führen Sie folgendes aus:

git checkout Dateiname

0 Stimmen

Ich versuche dies nach einem nicht committed git rm dateiname und es funktioniert nicht. Fehler: Pfadangabe 'dateiname' entspricht keiner bekannten Datei in git.

0 Stimmen

Die Lösung zur Rückgängigmachung von git rm ist git checkout master -- Dateiname

0 Stimmen

Es funktioniert (ausprobiert mit Git 2.17.1). Aber warum unterscheidet es sich von Zarne Dravitzki's Antwort?

10voto

Rob Punkte 4849

Bitte beachten Sie, dass möglicherweise immer noch Dateien vorhanden sind, die nicht zu verschwinden scheinen - sie könnten unverändert sein, aber Git könnte sie als bearbeitet markiert haben, aufgrund von CRLF / LF-Änderungen. Überprüfen Sie, ob Sie kürzlich Änderungen in der Datei .gitattributes vorgenommen haben.

In meinem Fall habe ich CRLF-Einstellungen in der Datei .gitattributes hinzugefügt und alle Dateien blieben in der Liste der "geänderten Dateien", wegen dieser Änderung. Die Änderung der .gitattributes-Einstellungen ließ sie verschwinden.

0 Stimmen

Ich auch. Nachdem ich versucht hatte, meine Zeilenenden neu zu normalisieren, hatte ich einen Fehler in meinen gitattributes, der "git reset --hard" nur abbrechen und nicht die Änderungen rückgängig machen ließ

7voto

Haritsinh Gohil Punkte 4562

Sie können einfach den folgenden Git-Befehl verwenden, der alle nicht committed Änderungen in Ihrem Repository zurücksetzen kann:

git checkout .

Beispiel:

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   application/controllers/Drivers.php
        modified:   application/views/drivers/add.php
        modified:   application/views/drivers/load_driver_info.php
        modified:   uploads/drivers/drivers.xlsx

no changes added to commit (use "git add" and/or "git commit -a")

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X