Gibt es einen git-Befehl, um alle nicht festgeschriebenen Änderungen in einem Arbeitsbaum und Index zurückzusetzen und auch neu erstellte Dateien und Ordner zu entfernen?
1071
Gibt es einen git-Befehl, um alle nicht festgeschriebenen Änderungen in einem Arbeitsbaum und Index zurückzusetzen und auch neu erstellte Dateien und Ordner zu entfernen?
Antworten:
Sie können diese beiden Befehle ausführen:
quelle
git clean -i
für einen interaktiven Modus.git merge --abort
.Wenn Sie die Änderungen nur im aktuellen Arbeitsverzeichnis rückgängig machen möchten, verwenden Sie
Und davor können Sie die Dateien auflisten, die zurückgesetzt werden, ohne tatsächlich etwas zu unternehmen, um zu überprüfen, was passieren wird, mit:
quelle
git reset --hard
?Verwenden Sie "git checkout - ...", um Änderungen im Arbeitsverzeichnis zu verwerfen
oder
Entfernt alle Änderungen, die an nicht bereitgestellten Dateien im Git-Status vorgenommen wurden, z
quelle
git checkout -- *
funktioniert bei mir nur, wenn ich mich in dem Verzeichnis befinde, in dem sich die geänderten Dateien befinden. Um alle Dateien im gesamten Repositorygit checkout -- :/
git checkout -- *
wird der Stern durch die Shell mit allen Dateien und Verzeichnissen im aktuellen Verzeichnis ersetzt. Also sollte es in Unterverzeichnisse gehen. Für mich geht das. Aber dank der Hervorhebung der Syntax ": /", die meiner Meinung nach sauberer ist.Eine nicht triviale Möglichkeit besteht darin, diese beiden Befehle auszuführen:
git stash
Dadurch werden Ihre Änderungen in den Stash verschoben und Sie kehren in den Status HEAD zurückgit stash drop
Dadurch wird der zuletzt im letzten Befehl erstellte Stash gelöscht.quelle
fatal: git-write-tree: error building trees Cannot save the current index state
hat nicht geholfen, neue Dateien blieben. Was ich getan habe, ist das Löschen des gesamten Arbeitsbaums und dann
Weitere Informationen zum Hinzufügen der
-x
Bereinigungsoption finden Sie unter " Wie lösche ich mein lokales Arbeitsverzeichnis in Git? ".Das Hinweis-
-x
Flag entfernt alle von Git ignorierten Dateien. Seien Sie also vorsichtig (siehe Diskussion in der Antwort, auf die ich mich beziehe).quelle
Ich denke, Sie können den folgenden Befehl verwenden:
git reset --hard
quelle
Bitte beachten Sie, dass es möglicherweise noch Dateien gibt, die nicht zu verschwinden scheinen - sie sind möglicherweise unbearbeitet, aber git hat sie möglicherweise aufgrund von CRLF / LF-Änderungen als bearbeitet markiert. Überprüfen Sie, ob Sie in
.gitattributes
letzter Zeit einige Änderungen vorgenommen haben .In meinem Fall habe ich der
.gitattributes
Datei CRLF-Einstellungen hinzugefügt und alle Dateien blieben aus diesem Grund in der Liste "Geänderte Dateien". Durch Ändern der Einstellungen für .gitattributes wurden diese ausgeblendet.quelle
Wenn Sie eine nicht festgeschriebene Änderung haben (die nur in Ihrer Arbeitskopie enthalten ist), die Sie in Ihrer letzten Festschreibung auf die Kopie zurücksetzen möchten, gehen Sie wie folgt vor:
quelle
git rm filename
und es funktioniert nicht.error: pathspec 'filename' did not match any file(s) known to git.
git rm
istgit checkout master -- filename
Git 2.23 führte den
git restore
Befehl zum Wiederherstellen von Arbeitsbaumdateien ein.https://git-scm.com/docs/git-restore
So stellen Sie alle Dateien im aktuellen Verzeichnis wieder her
Wenn Sie alle C-Quelldateien so wiederherstellen möchten, dass sie mit der Version im Index übereinstimmen, können Sie dies tun
quelle
Sie können einfach den folgenden git-Befehl verwenden, mit dem alle nicht festgeschriebenen Änderungen in Ihrem Repository zurückgesetzt werden können:
Beispiel:
quelle
Normalerweise benutze ich diesen Weg, der gut funktioniert:
quelle
Ein sicherer und langer Weg:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete
quelle
Verwenden:
Zum Beispiel:
quelle