Come annullare le modifiche non salvate, inclusi i file e le cartelle?
-
24-10-2019 - |
Domanda
C'è un comando git per ripristinare tutte le modifiche non in un albero di lavoro e l'indice ed a anche rimuovere i file e le cartelle appena creati?
Soluzione
È possibile eseguire questi due comandi:
# Revert changes to modified files.
git reset --hard
# Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`)
git clean -fd
Altri suggerimenti
Se si desidera ripristinare le modifiche solo nella directory di lavoro corrente, l'uso
git checkout -- .
E prima ancora, è possibile elencare i file che verranno per conversione senza in realtà fare alcuna azione, solo per controllare che cosa accadrà, con:
git checkout --
Usa "git checkout - ..." per i cambiamenti di scarto nella directory di lavoro
git checkout -- app/views/posts/index.html.erb
o
git checkout -- *
rimuove tutte le modifiche apportate ai file in git unstaged stato ad esempio
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
Un modo non banale è quello di eseguire questi due comandi:
-
git stash
Ciò sposterà le modifiche alla scorta, è riportare allo stato di HEAD -
git stash drop
Questo cancellerà l'ultimo nascondiglio creato nel l'ultimo comando.
git clean -fd
non ha aiutato, i nuovi file sono rimasti. Quello che ho fatto è completamente cancellando tutti i albero di lavoro e quindi
git reset --hard
Vedere " Come faccio cancellare la mia directory di lavoro locale in git " per un consiglio di aggiungere l'opzione -x
da pulire:?
git clean -fdx
Nota ??strong> bandiera -x
rimuoverà tutti i file ignorati da Git quindi fate attenzione (si veda la discussione nella risposta mi riferisco a).
Penso che si può utilizzare il seguente comando: git reset --hard
Si prega di notare che ci potrebbero essere ancora i file che non sembrano scomparire - potrebbero essere inediti, ma git potrebbe averli contrassegnato come in fase di modifica a causa di CRLF / LF cambia. Vedi se hai fatto alcuni cambiamenti nella .gitattributes
di recente.
Nel mio caso ho aggiunto le impostazioni CRLF nel file .gitattributes
e tutti i file rimasti nel "file modificati" lista a causa di questo. La modifica delle impostazioni .gitattributes li ha fatti sparire.
Se si dispone di un cambiamento non impegnati (il suo unico nella vostra copia di lavoro) che si desidera ripristinare la copia nel suo ultimo commettere, procedere come segue:
git checkout filename
Si può semplicemente utilizzare seguente comando git che può tornare tutte le modifiche non apportate nel repository:
git checkout .
Esempio:
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 comando git restore
introdotta per ripristinare i file di lavoro degli alberi.
https://git-scm.com/docs/git-restore
Per ripristinare tutti i file nella directory corrente
git ripristino.
Se si desidera ripristinare tutti i file sorgente C per corrispondere alla versione nell'indice, si può fare
git ripristinare '* .c'
Un modo sicuro e lunga:
-
git branch todelete
-
git checkout todelete
-
git add .
-
git commit -m "I did a bad thing, sorry"
-
git checkout develop
-
git branch -D todelete
Io di solito uso in questo modo che funziona bene:
mv fold/file /tmp
git checkout fold/file
Usa:
git reset HEAD filepath
Ad esempio:
git reset HEAD om211/src/META-INF/persistence.xml