Pregunta

¿Existe un comando git para revertir todos los cambios no comprometidos en un árbol y índice de trabajo y también eliminar archivos y carpetas recién creados?

¿Fue útil?

Solución

Puedes 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

Otros consejos

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 volverán sin hacer ninguna acción, solo para verificar lo que sucederá, con:

git checkout --

Use "Git Checkout - ..." para descartar los cambios en el directorio de trabajo

git checkout -- app/views/posts/index.html.erb

o

git checkout -- *

Elimina todos los cambios realizados en archivos no estados en estado de git, por ejemplo,

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

Una forma no trivial es ejecutar estos dos comandos:

  1. git stash Esto moverá sus cambios al alijo, lo que lo lleva de regreso al estado de la cabeza
  2. git stash drop Esto eliminará el último alijo creado en el último comando.
git clean -fd

No ayudó, quedaron nuevos archivos. Lo que hice es eliminar totalmente todo el árbol de trabajo y luego

git reset --hard

Ver "¿Cómo despejaré mi directorio de trabajo local en GIT?"Para consejo para agregar el -x opción para limpiar:

git clean -fdx

Nota -x Flag eliminará todos los archivos ignorados por Git, así que tenga cuidado (consulte 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 aún pueden haber archivos que no parecen desaparecer: podrían estar sin editar, pero Git podría haberlos marcado como editado debido a los cambios de CRLF / LF. Vea si ha realizado algunos cambios en .gitattributes recientemente.

En mi caso, he agregado configuraciones de CRLF en el .gitattributes Archivo y todos los archivos permanecieron en la lista de "archivos modificados" debido a esto. Cambiar la configuración .gitattributes los hizo desaparecer.

Si tiene un cambio no comprometido (está solo en su copia de trabajo) que desea volver a la copia en su última confirmación, haga lo siguiente:

git checkout filename

Puede usar el siguiente comando Git que puede volver a retroceder todos los cambios no comprometidos 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

Git 2.23 introducido git restore Comando para restaurar los archivos de árbol de trabajo.

https://git-scm.com/docs/git-restore

Para restaurar todos los archivos en el directorio actual

Git restauración.

Si desea restaurar todos los archivos de origen C para que coincida con la versión en el índice, puede hacer

git restaurar '*.c'

Un camino seguro y largo:

  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

Normalmente uso de esta manera que funcione bien:

mv fold/file /tmp
git checkout fold/file

Usar:

git reset HEAD filepath

Por ejemplo:

git reset HEAD om211/src/META-INF/persistence.xml
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top