So löschen Sie alle Änderungen aus dem Arbeitsverzeichnis, einschließlich neuer nicht verfolgter Dateien. Ich weiß, dass dies der git checkout -f
Fall ist, aber es werden keine neuen nicht verfolgten Dateien gelöscht, die seit dem letzten Festschreiben erstellt wurden.
Hat jemand eine Idee, wie das geht?
git help reset
undgit help clean
Antworten:
Verwenden Sie das
-n
Flag , um zu sehen, was zuvor gelöscht wird, ohne es tatsächlich zu löschen (dies ist im Grunde ein Testlauf). Wenn Sie bereit sind, tatsächlich zu löschen, entfernen Sie das-n
Flag:git clean -nfd
quelle
git clean -fxd
kann tatsächlich WIRKLICH gefährlich sein, wenn Sie nicht wissen, was Sie tun. Möglicherweise löschen Sie einige sehr wichtige nicht verfolgte Dateien wie Ihre Datenbank usw. dauerhaft. Seien Sie vorsichtig.git clean -f -d
auch Dateien aus ignorierten Ordnern gelöscht werden. Alle lokalen Protokolle und solche Dinge werden also verschwunden sein. Normalerweise ist es kein großes Problem, aber es ist besser zu wissen.Sicherste Methode, die ich häufig verwende:
Syntaxerklärung gemäß
/docs/git-clean
Seite:-f
(Alias :)--force
. Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, lehnt git clean das Löschen von Dateien oder Verzeichnissen ab, sofern nicht -f, -n oder -i angegeben wird. Git weigert sich, Verzeichnisse mit dem Unterverzeichnis oder der Datei .git zu löschen, es sei denn, ein zweites -f wird angegeben.-d
. Entfernen Sie nicht verfolgte Verzeichnisse zusätzlich zu nicht verfolgten Dateien. Wenn ein nicht verfolgtes Verzeichnis von einem anderen Git-Repository verwaltet wird, wird es standardmäßig nicht entfernt. Verwenden Sie die Option -f zweimal, wenn Sie ein solches Verzeichnis wirklich entfernen möchten.Wie in den Kommentaren erwähnt, ist es möglicherweise vorzuziehen,
git clean -nd
einen Trockenlauf durchzuführen, der Ihnen sagt, was gelöscht werden soll, bevor Sie ihn tatsächlich löschen.Link zur
git clean
Dokumentseite: https://git-scm.com/docs/git-cleanquelle
git clean -nd .
vor dem tatsächlichen Löschen von Dateien mitgit clean -fd .
add -A
+commit -a
+revert head
erste vorgit clean
. Das Überprüfen jedes einzelnen Löschvorgangs lässt sich für wichtige Szenarien einfach nicht skalieren. Auch Trockenlauf ist kein Wundermittel: Was ist, wenn Sie bei der Überprüfung etwas verpasst oder einen Fehler gemacht haben?Verwenden Sie für alle nicht bereitgestellten Dateien:
Das
.
am Ende ist wichtig.Sie können durch
.
einen Unterverzeichnisnamen ersetzen , um nur ein bestimmtes Unterverzeichnis Ihres Projekts zu löschen. Das Problem wird hier speziell angesprochen .quelle
src/app/work/filename.js
und../app/working/test/filename.js
. Nur die Verwendunggit checkout -- .
auf dem Zweig löschte nur die erste Datei ( ohne die führende ../ ). Also musste ichcd ../
in das zweite Speicherortverzeichnis, um die zweite Datei mit diesem Befehl zu löschen.Schauen Sie sich den
git clean
Befehl an.quelle
git clean -i
und "sauber" aus dem Menü gewählt - dies entfernte schließlich neue Dateien.Folgendes funktioniert:
Bitte beachten Sie, dass dadurch sowohl Ihre nicht bereitgestellten als auch Ihre bereitgestellten lokalen Änderungen verworfen werden. Sie sollten also alles festschreiben, was Sie behalten möchten, bevor Sie diese Befehle ausführen.
Ein typischer Anwendungsfall: Sie haben viele Dateien oder Verzeichnisse verschoben und möchten dann zum ursprünglichen Zustand zurückkehren.
Credits: https://stackoverflow.com/a/52719/246724
quelle
git stash drop
?git add -A .
). Ich habe 30 m verloren, weil es keine Dateiübereinstimmung gab. Vielen Dank!Sie können dies in zwei Schritten tun:
git checkout -f
git clean -fd
quelle
Ich dachte es wäre ( Warnung: Folgendes wird alles auslöschen )
Die
reset
Änderungen rückgängig zu machen. Dieclean
beliebige untracked entfernen f iles und d irectories.quelle
git pull
danach mache :CONFLICT (content): Merge conflict in...
Ich habe dies nur durch agit pull --strategy=ours
Es werden alle nicht verfolgten Dateien gelöscht.
quelle
git clean -i
zeigt Ihnen zuerst die zu löschenden Elemente und fährt nach Ihrer Bestätigung fort. Ich finde dies nützlich, wenn es um wichtige Dateien geht, die nicht versehentlich gelöscht werden sollten.Sehen Sie
git help clean
für weitere Informationen, darunter auch einige andere nützliche Optionen.quelle
Wenn Sie alle Änderungen verwerfen möchten, können Sie eine der gültigen Optionen in einem Alias in verwenden
.gitconfig
. Zum Beispiel:Verwendungszweck:
git discard
quelle
Eine alternative Lösung besteht darin, die Änderungen festzuschreiben und diese Festschreibungen dann zu entfernen. Dies hat zunächst keinen unmittelbaren Vorteil, eröffnet jedoch die Möglichkeit, in Blöcken festzuschreiben und ein Git-Tag für die Sicherung zu erstellen.
Sie können dies im aktuellen Zweig folgendermaßen tun:
Oder Sie können es auf freistehendem KOPF tun. (Vorausgesetzt, Sie starten im BRANCHNAME-Zweig):
Normalerweise schreibe ich jedoch in Blöcken fest und benenne dann einige oder alle Festschreibungen als "DISCARD: ...". Verwenden Sie dann die interaktive Rebase, um die schlechten Commits zu entfernen und die guten beizubehalten.
Dies ist ausführlicher, ermöglicht es jedoch, genau zu überprüfen, welche Änderungen Sie verwerfen möchten.
Die
git lol
undgit lola
Verknüpfungen waren bei diesem Workflow sehr hilfreich.quelle
Für einen bestimmten Ordner habe ich verwendet:
quelle
Dies ist wahrscheinlich eine Noob-Antwort, aber: Ich verwende TortoiseGit für Windows und es hat eine nette Funktion namens REVERT. Was Sie also tun, um Ihre lokalen nicht bereitgestellten nicht gepushten Änderungen zurückzusetzen, ist:
quelle