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?

War es hilfreich?

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:

  1. git stash Dadurch wird Ihre Änderungen in den Vorrat verschoben und Sie zurück in den Zustand des Kopfes bringen
  2. git 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:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top