6291 Stimmen

Wie verwerfe ich nicht bereitgestellte Änderungen in Git?

Wie verwerfe ich Änderungen in meiner Arbeitskopie, die nicht im Index enthalten sind?

0 Stimmen

16 Stimmen

git-clean entfernt nur die nicht verfolgten Dateien aus dem Arbeitsbaum git-scm.com/docs/git-clean

37 Stimmen

Um den obigen Kommentar von Asenar zu verdeutlichen, git-clean -df kann gefährlich sein. Es löscht lokale, nicht verfolgte Dateien (z. B. solche, die durch eine .gitignore-Datei abgedeckt sind). Lesen Sie die folgenden Hinweise sorgfältig durch und erwägen Sie stattdessen git checkout .

66voto

blak3r Punkte 15398

Ich fand diesen Artikel sehr hilfreich, weil er erklärt, wann welcher Befehl zu verwenden ist: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

Es gibt zwei verschiedene Fälle:

  1. Wenn Sie die Datei nicht bereitgestellt haben, dann verwenden Sie git checkout . Checkout "aktualisiert Dateien im Arbeitsbaum, damit sie mit der Version im Index übereinstimmen". Wenn die Dateien noch nicht in den Index aufgenommen wurden, wird dieser Befehl die Dateien im Wesentlichen auf den Stand der letzten Übergabe zurücksetzen.

    git checkout -- foo.txt

  2. Wenn Sie die Datei ausgelagert haben, verwenden Sie git reset. Reset ändert den Index so, dass er mit einem Commit übereinstimmt.

    git reset -- foo.txt

Ich vermute, dass die Verwendung von git stash ist eine beliebte Wahl, da sie etwas weniger gefährlich ist. Sie können immer wieder darauf zurückgreifen, wenn Sie bei der Verwendung von git reset versehentlich zu viel weggeblasen haben. Reset ist standardmäßig rekursiv.

Weitere Ratschläge finden Sie in dem oben genannten Artikel.

52voto

Joshua Kunzmann Punkte 910

Wenn Sie nicht daran interessiert sind, die unstaged-Änderungen beizubehalten (vor allem, wenn die staged-Änderungen neue Dateien sind), fand ich dies praktisch:

git diff | git apply --reverse

48voto

Erdem ÖZDEMİR Punkte 755

Während Sie git status eingeben, (verwenden Sie "git checkout -- ...", um Änderungen im Arbeitsverzeichnis zu verwerfen) wird angezeigt.

z.B.. git checkout -- .

1 Stimmen

Abgelehnt, weil es nicht hilft, alle Dateien schnell zu löschen. Die drei Punkte zeigen an, dass Sie alle Dateien auflisten müssen. Dies ist besonders schlecht, wenn Sie viele Dateien auf einmal verwerfen müssen, z. B. bei einer großen Zusammenführung, nachdem Sie alle Änderungen, die Sie behalten möchten, in eine Phase gebracht haben.

3 Stimmen

Der korrekte Befehl ist natürlich "git checkout -- .", ein einzelner Punkt. Im Kommentar waren die drei Punkte eine grammatikalische Sache, um darauf hinzuweisen, dass es viele andere Optionen gibt, die man hätte verwenden können

46voto

Asped Punkte 3113

Sie können git stash verwenden - wenn etwas schief geht, können Sie immer noch aus dem stash zurückkehren. Ähnlich wie bei einer anderen Antwort hier, aber diese entfernt auch alle unstaged Dateien und auch alle unstaged Löschungen:

git add .
git stash

Wenn Sie sich vergewissert haben, dass alles in Ordnung ist, werfen Sie den Vorrat weg:

git stash drop

Die Antwort von Bilal Maqsood mit git clean hat bei mir auch funktioniert, aber mit dem Vorrat habe ich mehr Kontrolle - wenn ich etwas aus Versehen tue, kann ich meine Änderungen immer noch zurückholen

UPDATE

Ich glaube, es gibt noch 1 weitere Änderung (ich weiß nicht, warum das bei mir vorher funktioniert hat):

git add . -A anstelle von git add .

sin el -A die entfernten Dateien werden nicht ausgelagert

45voto

Bijan Punkte 6341

git checkout -f


man git-checkout :

-f, --force

Beim Wechsel der Verzweigung ist auch dann fortzufahren, wenn der Index oder der Arbeitsbaum von HEAD abweicht. Dies wird verwendet, um lokale Änderungen zu verwerfen.

Wenn Sie Pfade aus dem Index auschecken, schlagen Sie nicht bei nicht markierten Einträgen fehl; stattdessen werden nicht markierte Einträge ignoriert.

3 Stimmen

Dies würde Änderungen im Index verwerfen!! (Und der OP verlangt, sie so zu lassen, wie sie sind.)

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