Wenn ich renne git reset --hard HEAD
, soll es auf eine makellose Version von dem zurückgesetzt werden, was Sie gezogen haben, so wie ich es verstehe. Leider bleiben Dateien herumliegen, da git status
eine große Liste von nicht verfolgten Dateien angezeigt wird.
Wie sagst du git "Bring es einfach auf genau das zurück, was im letzten Zug war, nicht mehr und nicht weniger"?
git reset --hard
Setzt Ihren Index zurück und setzt die verfolgten Dateien auf den Status in HEAD zurück. Es bleiben nicht verfolgte Dateien allein.Antworten:
Sie müssen verwenden
git clean -f -d
, um nicht verfolgte Dateien und Verzeichnisse in Ihrer Arbeitskopie zu entfernen.Wenn Sie das gesamte Repository einschließlich aller Git-Submodule auf Master zurücksetzen müssen, führen Sie dieses Skript aus:
quelle
-x
wenn Sie Ihre .gitignored-Dateien entfernen und in einen makellosen Zustand zurückkehren möchten.-n
Zum Test hinzufügen würde zuerst entfernt werden. Kombinieren Sie alle in einem Argument:-dfn
git clean -qfdx
hier. Entfernen Sie alles und tun Sie es leise.-d -f
zweimal decalred werden kann-dff
für-d -f -f
dieses ALL untracked Verzeichnisse löschen, einschließlich geschützt untracked Verzeichnisse.Wenn Sie Dateien haben, die Sie trotzdem behalten möchten:
git clean -di
führt eine interaktive Bereinigung durch, bei der Sie nur die Dateien / Verzeichnisse löschen können, die Sie nicht mehr möchten.quelle
oder zsh bietet einen 'gpristine'-Alias:
Welches ist wirklich praktisch.
Wenn Sie an einem gegabelten Repo arbeiten, stellen Sie sicher, dass Sie das richtige Repo / den richtigen Zweig abrufen und zurücksetzen, zum Beispiel:
quelle
-x
dergleichen löscht, wenn Sie gerade das Repo geklont hätten. Wenn Sie das wollen, ist es perfekt. Wenn Sie nur löschen wollen untracked Dateien, die das Entfernen-x
funktioniert Option gut.gpristine
Benutzerinteraktiver Ansatz:
-i für interaktiv
-f für force
-d für Verzeichnis
-x für ignorierte Dateien (bei Bedarf hinzufügen)
Hinweis: Fügen Sie -n oder --dry-run hinzu, um zu überprüfen, was es tun wird.
quelle
Sie können verwenden
git stash
. Sie müssen angeben--include-untracked
, sonst erhalten Sie das ursprüngliche Problem.Dann legen Sie einfach den letzten Eintrag im Vorrat ab
Sie können dafür einen praktischen Dandy-Alias erstellen und ihn
git wipe
beispielsweise aufrufen :quelle
Der Befehl, den Sie suchen, ist
git clean
quelle
git-clean
Verwenden Sie diese Option, um nicht verfolgte Dateien im Arbeitsbaum zu entfernen. Im Folgenden finden Sie einige Optionen (kurz), die mit demgit clean
Befehl verwendet werden können.-d
Verwenden Sie diese Option, wenn kein Pfad angegeben ist. Git-Rekurs in nicht verfolgte Verzeichnisse entfernen Sie sie.-f/--force
So entfernen Sie verschachtelte nicht verfolgte Dateien.-i/--interactive
Zeigen Sie, was getan werden würde, und bereinigen Sie Dateien interaktiv.-n/--dry-run
Zeigen Sie, was passieren wird, ohne etwas zu entfernen.-x
Dateien ignorierenBeispiel:
git clean -f -d
-> Entfernen Sie alle nicht verfolgten Dateien im aktuellen Verzeichnis und alle Unterverzeichnisse.quelle
Möglicherweise haben Sie irgendwann einen Soft-Reset durchgeführt. Sie können dieses Problem lösen, indem Sie dies tun
quelle