2011-01-07 4 views
222

Wie kann ich alle Änderungen rückgängig machen, die nach dem letzten Festschreiben an meinem Verzeichnis vorgenommen wurden, einschließlich Löschen von hinzugefügten Dateien, Zurücksetzen geänderter Dateien und Hinzufügen gelöschter Dateien?Zurücksetzen aller Änderungen nach dem letzten Festschreiben in git

+0

möglich Duplikat von [Zurück zum vorherigen Git-Commit] (http://StackOverflow.com/Questions/4114095/revert-to-previous-git-commit) – nawfal

+1

@Nawfal kann ein Duplikat sein, aber 'alle Änderungen zurücksetzen nach last commit 'entspricht mehr Suchkriterien (Wörter, die in google gesucht wurden) als entsprechende' wie man git repository zurücksetzt '. Zumindest für Leute wie mich, die kein Englisch als Muttersprache haben: d –

Antwort

409

Zuerst setzen Sie die Änderungen

git reset HEAD --hard 

dann untracked alles reinigen. Wenn Sie Dateien behalten möchten, die aufgrund von .gitignore nicht verfolgt werden, seien Sie vorsichtig mit diesem Befehl.

git clean -fd 
+6

@Adam: Sie können manchmal die '-x' Option auch' git clean' wünschen, die es auch anweist, ignorierte Dateien zu entfernen. – Cascabel

+23

Wenn Sie Dateien behalten möchten, die aufgrund von .gitignore nicht verfolgt werden, seien Sie vorsichtig mit dem Befehl 'git clean -fd'. – bitsoflogic

+3

@Levinaris: Es ist anders herum 'git clean -fd' löscht ignorierte Dateien nicht. '-x' wird. –

32

Wie kann ich rückgängig machen jede Änderung zu meinem Verzeichnis nach der letzten gemacht begehen, einschließlich hinzugefügten Dateien zu löschen, modifizierte Dateien zurückzusetzen und das Hinzufügen wieder gelöschten Dateien?

  1. Sie können Änderungen an rückgängig machen verfolgt Dateien mit:

    git reset HEAD --hard 
    
  2. Sie können mit untracked Dateien entfernen:

    git clean -f 
    
  3. Sie entfernen untracked Dateien und Verzeichnisse mit:

    git clean -fd 
    

    aber Sie Änderung untracked Dateien nicht rückgängig gemacht werden können.

  4. Sie können entfernen ignoriert und untracked Dateien und Verzeichnisse

    git clean -fdx 
    

    aber Sie können ignoriert Dateien nicht rückgängig machen Änderung.

können Sie setzen clean.requireForce-false:

git config --global --add clean.requireForce false 

-f (--force) unter Verwendung zu vermeiden, wenn Sie git clean verwenden.

+1

Ehrfürchtig, genau was ich brauchte. Danke für den Vergleich aller relevanten Befehle! – Marquee