¿Existe un comando git para revertir todos los cambios no confirmados en un árbol e índice de trabajo y también para eliminar archivos y carpetas recién creados?
¿Existe un comando git para revertir todos los cambios no confirmados en un árbol e índice de trabajo y también para eliminar archivos y carpetas recién creados?
Respuestas:
Puede ejecutar estos dos comandos:
# 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
para un modo interactivo.
git merge --abort
.
Si desea revertir los cambios solo en el directorio de trabajo actual, use
git checkout -- .
Y antes de eso, puede enumerar los archivos que se revertirán sin realizar ninguna acción, solo para verificar lo que sucederá, con:
git checkout --
git reset --hard
?
Use "git checkout - ..." para descartar cambios en el directorio de trabajo
git checkout -- app/views/posts/index.html.erb
o
git checkout -- *
elimina todos los cambios realizados en los archivos sin etapas en el estado de git, por ejemplo
modified: app/controllers/posts.rb
modified: app/views/posts/index.html.erb
git checkout -- *
no funciona para mí a menos que esté en el directorio donde se encuentran los archivos modificados. Para retirar todos los archivos en todo el repositorio, debe hacerlogit checkout -- :/
git checkout -- *
, la estrella se reemplaza por el Shell, con todos los archivos y directorios en el directorio actual. Por lo tanto, debe ir en subdirectorios. Esto funciona para mi. Pero gracias por resaltar la sintaxis ": /" que parece más limpia en mi opinión.
Una forma no trivial es ejecutar estos dos comandos:
git stash
Esto moverá tus cambios al alijo, regresándote al estado de HEADgit stash drop
Esto eliminará el último alijo creado en el último comando.fatal: git-write-tree: error building trees Cannot save the current index state
git clean -fd
no ayudó, quedaban nuevos archivos. Lo que hice fue eliminar totalmente todo el árbol de trabajo y luego
git reset --hard
Consulte " ¿Cómo borro mi directorio de trabajo local en git? " Para obtener consejos para agregar la -x
opción de limpieza:
git clean -fdx
La marca de nota -x
eliminará todos los archivos ignorados por Git, así que tenga cuidado (vea la discusión en la respuesta a la que me refiero).
Creo que puedes usar el siguiente comando: git reset --hard
Tenga en cuenta que es posible que todavía haya archivos que no parecen desaparecer; es posible que no se hayan editado, pero git podría haberlos marcado como editados debido a cambios en CRLF / LF. Vea si ha realizado algunos cambios .gitattributes
recientemente.
En mi caso, agregué configuraciones CRLF en el .gitattributes
archivo y todos los archivos permanecieron en la lista de "archivos modificados" debido a esto. Cambiar la configuración de .gitattributes los hizo desaparecer.
Si tiene un cambio no confirmado (solo en su copia de trabajo) que desea revertir a la copia en su última confirmación, haga lo siguiente:
git checkout filename
git rm filename
, y no funciona. error: pathspec 'filename' did not match any file(s) known to git.
git rm
esgit checkout master -- filename
Git 2.23 introdujo el git restore
comando para restaurar los archivos del árbol de trabajo.
https://git-scm.com/docs/git-restore
Para restaurar todos los archivos en el directorio actual
git restore.
Si desea restaurar todos los archivos fuente de C para que coincidan con la versión en el índice, puede hacer
git restore '* .c'
Puede usar el siguiente comando git que puede revertir todos los cambios no confirmados realizados en su repositorio:
git checkout .
Ejemplo:
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 camino seguro y largo:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete