1365 Stimmen

git: alle Änderungen im Arbeitsverzeichnis einschließlich neuer Dateien rückgängig machen

Wie lösche ich alle Änderungen im Arbeitsverzeichnis, einschließlich neuer, nicht verfolgter Dateien? Ich weiß, dass git checkout -f tut das, aber es löscht keine neuen, nicht verfolgten Dateien, die seit der letzten Übertragung erstellt wurden.

Hat jemand eine Idee, wie man das machen kann?

1 Stimmen

@Joel & Wayfarer: warum versuchst du nicht git help reset y git help clean

3 Stimmen

Es ist eine gute Idee, dafür einen Alias in der Git-Konfiguration anzulegen ;)

3voto

donquixote Punkte 4316

Eine alternative Lösung besteht darin, die Änderungen zu committen und diese Commits dann wieder zu entfernen. Dies hat zunächst keinen unmittelbaren Nutzen, eröffnet aber die Möglichkeit, die Änderungen in Stücken zu übertragen und ein Git-Tag für die Sicherung zu erstellen.

Sie können dies auf dem aktuellen Zweig tun, etwa so:

git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01  # optional
git revert HEAD
git reset HEAD^^

Oder Sie können es auf dem freistehenden KOPF tun. (vorausgesetzt, Sie beginnen auf dem BRANCHNAME-Zweig):

git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01  # optional
git checkout BRANCHNAME

Normalerweise mache ich es jedoch so, dass ich die Übertragungen in Teilen durchführe und dann einige oder alle Übertragungen als "DISCARD: ..." benenne. Dann verwende ich interaktives Rebase, um die schlechten Commits zu entfernen und die guten zu behalten.

git add -p  # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p  # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id)  # rebase on the commit id before the changes.
  # Remove the commits that say "DISCARD".

Dies ist zwar ausführlicher, ermöglicht aber eine genaue Überprüfung der Änderungen, die Sie verwerfen möchten.

El git lol y git lola Shortcuts haben sich bei diesem Arbeitsablauf als sehr hilfreich erwiesen.

2voto

Glauco Neves Punkte 3393

Für einen bestimmten Ordner habe ich verwendet:

git checkout -- FolderToClean/*

4 Stimmen

Unverfolgte Dateien werden dabei nicht gelöscht, wie der Betreiber angibt.

0voto

Oleg Vorontsov Punkte 1

Dies ist wahrscheinlich eine Anfängerantwort, aber: Ich benutze TortoiseGit für Windows und es hat eine nette Funktion namens REVERT. Was Sie also tun, um Ihre lokalen, nicht verschobenen, nicht gepushten Änderungen rückgängig zu machen, ist:

  1. öffnen Sie ein Kontextmenü für den gewünschten Ordner und wählen Sie "Zurücksetzen", Es wird ein Popup-Fenster angezeigt, in dem Sie die geänderten Dateien zum Wiederherstellen auswählen können.
  2. Wenn Sie auch hinzugefügte Dateien (die noch nicht in Git sind) löschen wollen, klicken Sie auf commit (aus dem gleichen Kontext Kontextmenü), öffnet sich das Commit-Popup und zeigt Ihnen die hinzugefügten Dateien an, dann klicken Sie mit der rechten Maustaste auf jede einzelne Datei und wählen Sie löschen. Aber drücken Sie nicht Commit btn in diesem Popup, da Sie nicht committen wollen, sondern nur die hinzugefügten Dateien und löschen Sie sie von hier aus.

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