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.

1986voto

htanata Punkte 35588

Sie können diese beiden Befehle ausführen:

# Änderungen an modifizierten Dateien rückgängig machen.
git reset --hard

# Entfernen Sie alle nicht verfolgten Dateien und Verzeichnisse.
# '-f' ist erzwingen, '-d' ist entfernen von Verzeichnissen.
git clean -fd

164 Stimmen

Gute Idee, 'git clean -nd' auszuführen, um die Änderungen vor dem Ausführen von git clean zu überprüfen und sicherzustellen, dass Sie keine nicht verfolgten Dateien oder Verzeichnisse haben, die Ihnen wichtig sind und entfernt werden.

87 Stimmen

Speichern Sie jemandem einen Besuch beim Arzt: -f ist erzwingen, -d ist Verzeichnisse entfernen, -n ist Testlauf (auch --dry-run; Ausgabe anzeigen, ohne etwas zu tun)

17 Stimmen

git clean -i für den interaktiven Modus.

622voto

Ramashish Baranwal Punkte 6988

Wenn Sie die Änderungen nur im aktuellen Arbeitsverzeichnis rückgängig machen möchten, verwenden Sie

git checkout -- .

Und davor können Sie die Dateien auflisten, die ohne tatsächliche Aktion rückgängig gemacht werden, um zu überprüfen, was passieren wird, mit:

git checkout --

1 Stimmen

Wenn ich das versuche, bekomme ich den Fehler: Pfadangabe '.' passt zu keiner Datei, die Git bekannt ist.

40 Stimmen

Was ist der Unterschied zwischen diesem und git reset --hard?

120 Stimmen

'git reset --hard' wird sowohl gestagte als auch ungestagte Änderungen rückgängig machen, während 'git checkout -- .' nur ungestagte Änderungen rückgängig machen wird

132voto

Zarne Dravitzki Punkte 1598

Verwenden Sie "git checkout -- ..." um Änderungen im Arbeitsverzeichnis zu verwerfen

git checkout -- app/views/posts/index.html.erb

oder

git checkout -- *

entfernt alle Änderungen an ungestageten Dateien im git status z.B.

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

8 Stimmen

git checkout -- * funktioniert für mich nicht, es sei denn, ich befinde mich im Verzeichnis, in dem sich die geänderten Dateien befinden. Um alle Dateien im gesamten Repository auszuchecken, müssen Sie git checkout -- :/ verwenden.

0 Stimmen

Im git checkout -- *, wird der Stern vom Shell durch alle Dateien und Verzeichnisse im aktuellen Verzeichnis ersetzt. Es funktioniert für mich. Aber danke für das Hervorheben der Syntax " :/ ", das meiner Meinung nach sauberer aussieht.

0 Stimmen

Es scheint, dass ich auch git checkout -- '**/*.md' machen kann. Genau das, was ich gerade brauche.

66voto

glumgold Punkte 779

Ein nicht-trivialer Weg besteht darin, diese zwei Befehle auszuführen:

  1. git stash Dies verschiebt Ihre Änderungen in den Zwischenspeicher und bringt Sie zurück zum HEAD-Zustand
  2. git stash drop Dies löscht den zuletzt erstellten Zwischenspeicher im letzten Befehl.

3 Stimmen

Dies funktioniert nicht für nicht festgelegte Änderungen, nur für festgelegte Änderungen.

4 Stimmen

Ich habe es für nicht festgelegte Änderungen verwendet und es funktioniert.

10 Stimmen

@b0xxed1n Stashing geht um nicht festgelegte Änderungen, und offensichtlich funktioniert es für sie.

35voto

TheKojuEffect Punkte 18925

Git 2.23 hat das git restore-Befehl eingeführt, um Arbeitsbaumdateien wiederherzustellen.

Um alle Dateien im aktuellen Verzeichnis wiederherzustellen:

git restore .

Wenn Sie alle C-Quelldateien wiederherstellen möchten, um die Version im Index anzupassen, können Sie dies tun

git restore '*.c'

1 Stimmen

Es ist git 2.23, nicht 2.13

0 Stimmen

Was ist das entsprechende Veröffentlichungsdatum für Git 2.23?

0 Stimmen

Um eine bestimmte Datei wiederherzustellen, fügen Sie den Dateinamen als Ersatz für ein. z.B. git restore index.js

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