Wie kann ich nicht verbindliche Änderungen einschließlich Dateien und Ordner zurücksetzen?
-
24-10-2019 - |
Frage
Gibt es einen GIT -Befehl, um alle nicht übereinstimmenden Änderungen in einem Arbeitsbaum und in einem Index zurückzuversetzen und auch neu erstellte Dateien und Ordner zu entfernen?
Lösung
Sie können diese beiden Befehle ausführen:
# Revert changes to modified files.
git reset --hard
# Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`)
git clean -fd
Andere Tipps
Wenn Sie die Änderungen nur im aktuellen Arbeitsverzeichnis zurückversetzen möchten, verwenden Sie
git checkout -- .
Und davor können Sie die Dateien auflisten, die zurückgekehrt werden, ohne tatsächlich Maßnahmen zu ergreifen, nur um zu überprüfen, was passieren wird, mit:
git checkout --
Verwenden Sie "Git Checkout - ...", um Änderungen im Arbeitsverzeichnis zu verwerfen
git checkout -- app/views/posts/index.html.erb
oder
git checkout -- *
Entfernt alle Änderungen an nicht gestalteten Dateien im Git -Status z.
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
Ein nicht trivialer Weg besteht darin, diese beiden Befehle auszuführen:
git stash
Dadurch wird Ihre Änderungen in den Vorrat verschoben und Sie zurück in den Zustand des Kopfes bringengit stash drop
Dadurch wird der neueste im letzten Befehl erstellte Stash gelöscht.
git clean -fd
Nicht geholfen, neue Dateien blieben übrig. Was ich getan habe, ist, den gesamten Arbeitsbaum und dann total zu löschen
git reset --hard
Sehen "Wie klare ich mein lokales Arbeitsverzeichnis in Git?"Für Ratschläge das hinzufügen -x
Option zum Reinigen:
git clean -fdx
Notiz -x
Flag entfernen alle von Git ignorierten Dateien. Seien Sie also vorsichtig (siehe Diskussion in der Antwort, auf die ich mich beziehe).
Ich denke, Sie können den folgenden Befehl verwenden: git reset --hard
Bitte beachten Sie, dass es möglicherweise noch Dateien gibt, die nicht verschwinden zu sein scheinen - sie könnten nicht bearbeitet werden, aber Git könnte sie aufgrund von CRLF / LF -Änderungen als bearbeitet markiert haben. Sehen Sie, ob Sie einige Änderungen vorgenommen haben .gitattributes
in letzter Zeit.
In meinem Fall habe ich CRLF -Einstellungen in die hinzugefügt .gitattributes
Datei und alle Dateien blieben daher in der Liste der "geänderten Dateien". Das Ändern der Einstellungen für .gitattributes ließ sie verschwinden.
Wenn Sie eine nicht übereinstimmende Änderung haben (nur in Ihrer Arbeitskopie), die Sie in Ihrem neuesten Commit zu der Kopie zurückkehren möchten, machen Sie Folgendes:
git checkout filename
Sie können nur den folgenden Git -Befehl verwenden, mit dem alle in Ihrem Repository vorgenommenen nicht übereinstimmenden Änderungen zurückkehren können:
git checkout .
Beispiel:
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: application/controllers/Drivers.php
modified: application/views/drivers/add.php
modified: application/views/drivers/load_driver_info.php
modified: uploads/drivers/drivers.xlsx
no changes added to commit (use "git add" and/or "git commit -a")
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .
ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
Git 2.23 eingeführt git restore
Befehl zur Wiederherstellung von Arbeitsbaumdateien.
https://git-scm.com/docs/git-restore
So restaurieren Sie alle Dateien im aktuellen Verzeichnis
Git -Wiederherstellung.
Wenn Sie alle C -Quelldateien wiederherstellen möchten, um mit der Version im Index übereinzustimmen, können Sie dies tun
Git restoure '*.c'
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
Normalerweise benutze ich so gut, dass ich gut funktioniert:
mv fold/file /tmp
git checkout fold/file
Verwenden:
git reset HEAD filepath
Zum Beispiel:
git reset HEAD om211/src/META-INF/persistence.xml