Wie kann ich nicht festgeschriebene Änderungen einschließlich Dateien und Ordnern rückgängig machen?

Lesezeit: 5 Minuten

Benutzer-Avatar
MEM

Gibt es einen Git-Befehl, um alle nicht festgeschriebenen Änderungen in einem funktionierenden Baum und Index rückgängig zu machen und auch neu erstellte Dateien und Ordner zu entfernen?

  • Mögliches Duplikat von Wie verwerfen Sie nicht bereitgestellte Änderungen in Git?

    – wusan

    13. Mai 2016 um 10:28 Uhr

  • Nun, ich habe all die vielfältigen und schwer zu merkenden Antworten unten gelesen, mit ihren Vorbehalten und Grenzfällen und “funktionierte nicht, wenn Sie xxx haben”, und bin dabei geblieben, das gesamte Repo zu löschen und es zu klonen, um alle bearbeiteten und hinzugefügten Dateien zu entfernen . Ist auch nur zwei Befehle. rm -r Projektverzeichnis; git-Klon xxx. Für mich ist dies eine häufige Operation – schauen Sie sich ein Repo an, spielen Sie damit herum, und möchten Sie dann zu einem sauberen Checkout zurückkehren, damit ich mit der Änderung beginnen kann. Nicht toll, aber funktioniert zu 100%. In der Hoffnung, dass sie eines Tages einen einfachen Befehl dafür hinzufügen werden.

    – Johannes Klein

    16. August 2018 um 22:07 Uhr


Benutzer-Avatar
htanata

Sie können diese beiden Befehle ausführen:

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd

  • Es ist eine gute Idee, „git clean -nd“ auszuführen, um eine Vorschau der Änderungen anzuzeigen, bevor Sie git clean ausführen, um sicherzustellen, dass Sie keine nicht nachverfolgten Dateien oder Verzeichnisse haben, die Sie interessieren und die entfernt werden.

    – jpw

    14. Juli 2013 um 5:13 Uhr

  • Ersparen Sie jemandem einen Ausflug in die Dokumentation: -f ist erzwingen, -d ist Verzeichnisse entfernen, -n ist Probelauf (auch –dry-run; Ausgabe anzeigen, ohne noch etwas zu tun)

    – Aaron Campbell

    4. Juni 2015 um 21:07 Uhr


  • git clean -i für einen interaktiven Modus.

    – gala

    12. August 2015 um 15:17 Uhr

  • Es hat meine nicht bereitgestellten Dateien nicht zurückgesetzt, ich musste sie zuerst bereitstellen.

    – Aron Lorincz

    8. Januar 2016 um 12:06 Uhr

  • @IgorGanapolsky Sie befinden sich wahrscheinlich mitten in einem Zusammenführungskonflikt. Versuchen Sie es mit Laufen git merge --abort.

    – htanata

    12. Oktober 2016 um 20:46 Uhr

Benutzer-Avatar
Ramashish Baranwal

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

git checkout -- .

Und vorher können Sie die Dateien auflisten, die zurückgesetzt werden, ohne tatsächlich etwas zu unternehmen, nur um zu überprüfen, was passieren wird, mit:

git checkout --

  • Wenn ich das versuche, bekomme ich “error: pathpec ‘.” stimmte mit keiner git bekannten Datei(en) überein.

    – Mike K

    16. Mai 2014 um 17:12 Uhr

  • was ist der unterschied zwischen diesem und git reset --hard?

    – Felipe

    10. August 2014 um 22:32 Uhr

  • ‘git reset –hard’ macht sowohl gestaffelte als auch nicht gestaffelte Änderungen rückgängig, während ‘git checkout — .’ macht nur nicht bereitgestellte Änderungen rückgängig

    – geteilt durch Null

    30. Oktober 2014 um 10:36 Uhr

  • Aber wenn Sie das Auschecken verwenden und Dateien geändert haben, gibt das cmd zurück, dass ich die Zusammenführung durchführen muss, selbst wenn ich diese Änderungen nur rückgängig machen muss

    – Vinicius Monteiro

    16. Dezember 2015 um 11:47 Uhr

  • git checkout – listet einfach die Dateien auf, die zurückgesetzt werden (keine Aktion, nur Liste). Dies ist nützlich, wenn Sie sehen möchten, welche Dateien betroffen sind, bevor Sie git checkout — ausführen.

    – Krish Srinivasan

    3. August 2016 um 15:27 Uhr


Verwenden Sie “git checkout — …”, um Änderungen im Arbeitsverzeichnis zu verwerfen

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

oder

git checkout -- *

entfernt alle Änderungen, die an nicht bereitgestellten Dateien im Git-Status vorgenommen wurden, z

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

  • git checkout -- * funktioniert bei mir nur, wenn ich mich in dem Verzeichnis befinde, in dem sich die geänderten Dateien befinden. Um alle Dateien im gesamten Repository auszuchecken, müssen Sie dies tun git checkout -- :/

    – waldreich

    4. April 2016 um 19:02 Uhr

  • In git checkout -- *, der Stern wird durch die Shell ersetzt, mit allen Dateien und Verzeichnissen im aktuellen Verzeichnis. Es sollte also in Unterverzeichnisse gehen. Für mich geht das. Aber dank der Hervorhebung der Syntax “:/”, die meiner Meinung nach sauberer erscheint.

    – mcooliv

    30. November 2016 um 12:40 Uhr

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

    – Polv

    19. Juni 2020 um 2:15 Uhr

Benutzer-Avatar
Glumgold

Eine nicht triviale Möglichkeit besteht darin, diese beiden Befehle auszuführen:

  1. git stash Dies verschiebt Ihre Änderungen in den Stash und bringt Sie zurück in den HEAD-Zustand
  2. git stash drop Dadurch wird der letzte Stash gelöscht, der im letzten Befehl erstellt wurde.

Benutzer-Avatar
Fr0sT

git clean -fd

hat nicht geholfen, und neue Dateien blieben. Ich habe den gesamten Arbeitsbaum und dann vollständig gelöscht

git reset --hard

Sehen “https://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in-git/673420#673420” für Ratschläge zum Hinzufügen der -x Reinigungsmöglichkeit:

git clean -fdx

Notiz -x flag entfernt alle Dateien, die von Git ignoriert werden, seien Sie also vorsichtig (siehe die Diskussion in der Antwort, auf die ich mich beziehe).

  • Was ist -fdx? “Forcen, Verzeichnis und x ist?

    – Adi Prasetyo

    30. April 2016 um 3:37 Uhr

  • @AdiPrasetyo -x Flag entfernt auch alle ignorierten Dateien; Es könnte ein unerwünschter Effekt sein, also habe ich meine Antwort aktualisiert.

    – Fr0sT

    4. Mai 2016 um 6:41 Uhr

  • Ich kann immer noch nicht rebase. Ich bekomme den Fehler: Fehler: Die Änderungen konnten nicht zusammengeführt werden. Patch fehlgeschlagen bei 0003 Erstellen Sie Rückruf an Die Kopie des fehlgeschlagenen Patches befindet sich in:

    – IgorGanapolsky

    12. Oktober 2016 um 17:08 Uhr

Benutzer-Avatar
Malloc

Ich denke, Sie können den folgenden Befehl verwenden: git reset --hard

  • Was ist -fdx? “Forcen, Verzeichnis und x ist?

    – Adi Prasetyo

    30. April 2016 um 3:37 Uhr

  • @AdiPrasetyo -x Flag entfernt auch alle ignorierten Dateien; Es könnte ein unerwünschter Effekt sein, also habe ich meine Antwort aktualisiert.

    – Fr0sT

    4. Mai 2016 um 6:41 Uhr

  • Ich kann immer noch nicht rebase. Ich bekomme den Fehler: Fehler: Die Änderungen konnten nicht zusammengeführt werden. Patch fehlgeschlagen bei 0003 Erstellen Sie Rückruf an Die Kopie des fehlgeschlagenen Patches befindet sich in:

    – IgorGanapolsky

    12. Oktober 2016 um 17:08 Uhr

Benutzer-Avatar
Peter Mortensen

Git 2.23 führte die git restore Befehl zum Wiederherstellen von Arbeitsbaumdateien.

So stellen Sie alle Dateien im aktuellen Verzeichnis wieder her:

git restore .

Wenn Sie alle C-Quelldateien so wiederherstellen möchten, dass sie mit der Version im Index übereinstimmen, können Sie dies tun

git restore '*.c'

  • es ist git 2.23nicht 2.13

    – phuklv

    3. September 2019 um 4:22 Uhr

  • Was ist das entsprechende (Release-)Datum für Git 2.23?

    – Peter Mortensen

    14. Mai um 22:12 Uhr


1013830cookie-checkWie kann ich nicht festgeschriebene Änderungen einschließlich Dateien und Ordnern rückgängig machen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy