Esiste un comando git per ripristinare tutte le modifiche senza commit in un albero di lavoro e indicizzare e rimuovere anche i file e le cartelle appena creati?
Esiste un comando git per ripristinare tutte le modifiche senza commit in un albero di lavoro e indicizzare e rimuovere anche i file e le cartelle appena creati?
Risposte:
È 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
git clean -i
per una modalità interattiva.
git merge --abort
.
Se si desidera ripristinare le modifiche solo nella directory di lavoro corrente, utilizzare
git checkout -- .
E prima ancora, puoi elencare i file che verranno ripristinati senza fare alcuna azione, solo per verificare cosa accadrà, con:
git checkout --
git reset --hard
?
Utilizzare "git checkout - ..." per annullare le modifiche nella directory di lavoro
git checkout -- app/views/posts/index.html.erb
o
git checkout -- *
rimuove tutte le modifiche apportate ai file non in scena nello stato git ad es
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
non funziona per me se non mi trovo nella directory in cui si trovano i file modificati. Per effettuare il checkout di tutti i file in tutto il repository, è necessariogit checkout -- :/
git checkout -- *
, la stella viene sostituita da Shell, con tutti i file e le directory nella directory corrente. Quindi dovrebbe andare nelle sottodirectory. Per me funziona. Ma grazie per evidenziare la sintassi ": /" che secondo me è più pulita.
Un modo non banale è eseguire questi due comandi:
git stash
Questo sposterà le tue modifiche allo stash, riportandoti allo stato di HEADgit stash drop
Questo eliminerà l'ultima scorta creata nell'ultimo comando.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
non ha aiutato, sono rimasti nuovi file. Quello che ho fatto è stato cancellare completamente tutto l'albero di lavoro e poi
git reset --hard
Vedi " Come posso cancellare la mia directory di lavoro locale in git? " Per consigli su come aggiungere l' -x
opzione per pulire:
git clean -fdx
Nota -x
flag rimuoverà tutti i file ignorati da Git quindi fai attenzione (vedi discussione nella risposta a cui mi riferisco).
Penso che tu possa usare il seguente comando: git reset --hard
Nota che potrebbero esserci ancora dei file che non sembrano scomparire: potrebbero non essere modificati, ma git potrebbe averli contrassegnati come modificati a causa delle modifiche CRLF / LF. Vedi se hai apportato alcune modifiche di .gitattributes
recente.
Nel mio caso ho aggiunto le impostazioni CRLF al .gitattributes
file e tutti i file sono rimasti nell'elenco "file modificati" per questo motivo. La modifica delle impostazioni di .gitattributes le ha fatte scomparire.
Se hai una modifica non impegnata (è solo nella tua copia di lavoro) che desideri ripristinare alla copia nell'ultimo commit, procedi come segue:
git checkout filename
git rm filename
, e non funziona. error: pathspec 'filename' did not match any file(s) known to git.
git rm
ègit checkout master -- filename
Git 2.23 ha introdotto il git restore
comando per ripristinare i file dell'albero di lavoro.
https://git-scm.com/docs/git-restore
Per ripristinare tutti i file nella directory corrente
ripristino git.
Se vuoi ripristinare tutti i file sorgente C in modo che corrispondano alla versione dell'indice, puoi farlo
git restore '* .c'
Puoi semplicemente usare il seguente comando git che può ripristinare tutte le modifiche non confermate apportate nel tuo 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
Un modo sicuro e lungo:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete