Tengo un proyecto en el que corrí git init
. Después de varias confirmaciones, hice lo git status
que me dijo que todo estaba actualizado y que no había cambios locales.
Luego hice varios cambios consecutivos y me di cuenta de que quería tirar todo y volver a mi estado original. ¿Este comando lo hará por mí?
git reset --hard HEAD
fuente
git checkout path/to/file
solo revertirá los cambios locales apath/to/file
git checkout .
ygit reset [--hard HEAD]
no funcionó, tuve que hacer ungit clean -fd
para revertir mis cambios.git reset
no restablece tus cambios,git reset --hard
hace eso.Nota: es posible que también desee ejecutar
como
será no eliminar archivos sin seguimiento, donde como git-limpio se eliminarán todos los archivos del directorio raíz orugas que no están bajo el seguimiento de git. ADVERTENCIA: ¡TENGA CUIDADO CON ESTO! Es útil ejecutar primero una ejecución en seco con git-clean, para ver qué eliminará.
Esto también es especialmente útil cuando recibe el mensaje de error
Lo que puede ocurrir al hacer varias cosas, una es actualizar una copia de trabajo cuando usted y su amigo han agregado un nuevo archivo con el mismo nombre, pero él lo ha confiado primero en el control de origen y no le importa eliminar su copia no rastreada .
En esta situación, hacer una ejecución en seco también ayudará a mostrarle una lista de archivos que se sobrescribirán.
fuente
Re-clonar
.gitignore
(como archivos de compilación).gitignore
Los siguientes son otros comandos que olvido a diario.
Limpiar y reiniciar
.gitignore
(como archivos de compilación).gitignore
Limpiar
.gitignore
(como archivos de compilación).gitignore
Reiniciar
.gitignore
(como archivos de compilación).gitignore
Notas
Caso de prueba para confirmar todo lo anterior (use bash o sh):
Ver también
git revert
para hacer nuevos compromisos que deshacen los compromisos anterioresgit checkout
retroceder en el tiempo a confirmaciones anteriores (puede requerir ejecutar primero los comandos anteriores)git stash
igual que elgit reset
anterior, pero puedes deshacerlofuente
git clean -f -d -x
: si se especifica la opción -x, los archivos ignorados también se eliminan. Esto puede, por ejemplo, ser útil para eliminar todos los productos de compilación.- de los documentos de GITSi desea revertir todos los cambios Y estar actualizado con el maestro remoto actual (por ejemplo, encuentra que el HEAD maestro ha avanzado desde que se bifurcó y su empuje está siendo 'rechazado') puede usar
fuente
origin
engit reset --hard origin/master
(que funciona) - sin él (es decirgit reset --hard
) nada parece haber cambiado.Mira en git-reflog. Enumerará todos los estados que recuerda (el valor predeterminado es 30 días), y puede simplemente retirar el que desee. Por ejemplo:
fuente
git rebase -i
había salido mal (terminó borrando algunas confirmaciones debido a un error de edición). Gracias a este consejo, he vuelto a estar en buen estado.PELIGRO ADELANTE: (lea los comentarios. Ejecutar el comando propuesto en mi respuesta podría eliminar más de lo que desea)
para eliminar completamente todos los archivos, incluidos los directorios que tuve que ejecutar
fuente
Después de leer un montón de respuestas y probarlas, he encontrado varios casos extremos que a veces no limpian completamente la copia de trabajo.
Aquí está mi script de bash actual para hacerlo, que funciona todo el tiempo.
Ejecutar desde el directorio raíz de la copia de trabajo.
fuente
error: pathspec 'HEAD' did not match any file(s) known to git.
git checkout HEAD
git reset --hard
revierte los archivos rastreados (por etapas o no),git clean -f -d
elimina los archivos no rastreados ,git checkout -- HEAD
¿por qué necesitamos esto entonces?simplemente ejecute
eliminará todos tus cambios locales. y también puedes usarlo más tarde ejecutando -
fuente
git stash pop
eliminaría automáticamente el cambio oculto más alto para ustedgit stash drop
para eliminar el último estado oculto sin aplicar a la copia de trabajo.Me encontré con un problema similar. La solución es usar
git log
para buscar qué versión de la confirmación local es diferente de la remota. (Por ejemplo, la versión es3c74a11530697214cbcc4b7b98bf7a65952a34ec
).Luego use
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
para revertir el cambio.fuente
Busqué un problema similar,
Quería tirar los compromisos locales:
También lo hizo a continuación:
Cheque:
ahora se pierden las confirmaciones locales, de vuelta al estado clonado inicial, punto 1 anterior.
fuente
Es posible que no necesariamente desee / necesite guardar su trabajo / archivos en su directorio de trabajo, sino simplemente deshacerse de ellos por completo. El comando
git clean
hará esto por ti.Algunos casos de uso comunes para hacer esto serían eliminar cruft generado por fusiones o herramientas externas o eliminar otros archivos para que pueda ejecutar una compilación limpia.
Tenga en cuenta que querrá ser muy cauteloso con este comando, ya que está diseñado para eliminar archivos de su directorio de trabajo local que NO ESTÁN SEGUIDOS. si de repente cambia de opinión después de ejecutar este comando, no hay vuelta atrás para ver el contenido de los archivos que se eliminaron. Una alternativa más segura es ejecutar
git stash --all
que eliminará todo pero lo guardará todo en un alijo. Este alijo puede luego ser utilizado.
Sin embargo, si realmente desea eliminar todos los archivos y limpiar su directorio de trabajo, debe ejecutar
git clean -f -d
Esto eliminará cualquier archivo y también cualquier subdirectorio que no tenga ningún elemento como resultado del comando. Una cosa inteligente que hacer antes de ejecutar el
git clean -f -d
comando es ejecutarque le mostrará una vista previa de lo que se eliminará después de ejecutar
git clean -f -d
Aquí hay un resumen de sus opciones, desde la más agresiva hasta la menos agresiva
Opción 1 : eliminar todos los archivos localmente (más agresivo)
Opción 2 : Vista previa del impacto anterior (Vista previa más agresiva)
Opción 3 : ocultar todos los archivos (menos agresivo)
fuente
Pruebe esto para revertir todos los cambios no confirmados en la sucursal local
Pero si ves un error como este:
Puede navegar a la carpeta '.git' y luego eliminar el archivo index.lock:
Finalmente, ejecute nuevamente el comando:
fuente
Esta pregunta es más sobre restablecer / revertir un repositorio más amplio, pero en caso de que esté interesado en revertir el cambio individual, he agregado una respuesta similar aquí:
https://stackoverflow.com/a/60890371/2338477
Respuestas a preguntas:
Cómo revertir el cambio individual con o sin cambio conservando en el historial de git
Cómo volver a la versión anterior para reiniciar desde el mismo estado
fuente