Cómo eliminar todos los cambios del directorio de trabajo, incluidos los nuevos archivos sin seguimiento. Sé que eso git checkout -f
hace eso, pero no elimina los nuevos archivos sin seguimiento creados desde la última confirmación.
¿Alguien tiene una idea de cómo hacer eso?
git help reset
ygit help clean
Respuestas:
Para ver lo que se eliminará de antemano, sin eliminarlo realmente, use el
-n
indicador (esto es básicamente una ejecución de prueba). Cuando esté listo para eliminar, elimine la-n
bandera:git clean -nfd
fuente
git clean -fxd
en realidad puede ser REALMENTE peligroso si no sabes lo que estás haciendo. Puede terminar eliminando permanentemente algunos archivos no rastreados muy importantes, como su base de datos, etc. Tenga cuidado.git clean -f -d
también eliminará los archivos de las carpetas ignoradas. Así que todos los registros locales y cosas así se habrán ido. Por lo general, no es un gran problema, pero es mejor saberlo.Método más seguro, que uso con frecuencia:
Explicación de sintaxis según la
/docs/git-clean
página:-f
(alias:)--force
. Si la variable de configuración de Git clean.requireForce no está establecida en false, git clean se negará a eliminar archivos o directorios a menos que se indique -f, -n o -i. Git se negará a eliminar directorios con el subdirectorio o archivo .git a menos que se dé una segunda -f.-d
. Elimine los directorios sin seguimiento además de los archivos sin seguimiento. Si un directorio no rastreado es administrado por un repositorio Git diferente, no se elimina de manera predeterminada. Use la opción -f dos veces si realmente desea eliminar dicho directorio.Como se mencionó en los comentarios, puede ser preferible hacer una
git clean -nd
ejecución en seco y le diga qué se eliminaría antes de eliminarlo.Enlace a la
git clean
página del documento: https://git-scm.com/docs/git-cleanfuente
git clean -nd .
antes de eliminar archivos usandogit clean -fd .
add -A
+commit -a
+ en blancorevert head
primero antesgit clean
. Revisar todas y cada una de las eliminaciones simplemente no escala para los escenarios principales. Además, el funcionamiento en seco no es una bala de plata: ¿qué pasa si se perdió algo o se equivocó durante la revisión?Para todos los archivos sin clasificar , use:
Al
.
final es importante.Puede reemplazarlo
.
con un nombre de subdirectorio para borrar solo un subdirectorio específico de su proyecto. El problema se aborda específicamente aquí .fuente
src/app/work/filename.js
y../app/working/test/filename.js
. Solo el usogit checkout -- .
en la rama solo eliminó el primer archivo ( sin los principales ../ ). Así que tuve quecd ../
subir al segundo directorio de ubicación para eliminar el segundo archivo usando ese comando.Echa un vistazo al
git clean
comando.fuente
git clean -i
y elegí "limpiar" del menú, esto finalmente eliminó los archivos nuevos.Los siguientes trabajos:
Tenga en cuenta que esto descartará los cambios locales no organizados y organizados. Por lo tanto, debe confirmar todo lo que desee conservar antes de ejecutar estos comandos.
Un caso de uso típico: movió muchos archivos o directorios, y luego desea volver al estado original.
Créditos: https://stackoverflow.com/a/52719/246724
fuente
git stash drop
?git add -A .
). He perdido 30 millones porque no hubo coincidencia de archivos. ¡Gracias!Puedes hacer esto en dos pasos:
git checkout -f
git clean -fd
fuente
Pensé que era ( advertencia: siguiente será arrasar con todo )
El
reset
para deshacer cambios. Laclean
eliminar cualquier untracked f iles y d irectories.fuente
git pull
después:CONFLICT (content): Merge conflict in...
solo lo resolví por ungit pull --strategy=ours
Eliminará todos los archivos no rastreados.
fuente
git clean -i
primero le mostrará los elementos que se eliminarán y continuará después de su confirmación. Esto me resulta útil cuando se trata de archivos importantes que no deben eliminarse accidentalmente.Consulte
git help clean
para obtener más información, incluidas algunas otras opciones útiles.fuente
Si desea descartar todos los cambios, puede usar cualquiera de las opciones válidas en un alias en
.gitconfig
. Por ejemplo:Uso:
git discard
fuente
Una solución alternativa es confirmar los cambios y luego deshacerse de esos cambios. Al principio, esto no tiene un beneficio inmediato, pero abre la posibilidad de comprometerse en fragmentos y crear una etiqueta git para la copia de seguridad.
Puedes hacerlo en la rama actual, así:
O puede hacerlo con la CABEZA separada. (suponiendo que comience en la rama BRANCHNAME):
Sin embargo, lo que suelo hacer es comprometerme en fragmentos, luego nombrar algunos o todos los confirmados como "DESCARTAR: ...". Luego, use rebase interactivo para eliminar los commits malos y conservar los buenos.
Esto es más detallado, pero permite revisar exactamente qué cambios desea descartar.
Los atajos
git lol
ygit lola
han sido muy útiles con este flujo de trabajo.fuente
Para una carpeta específica que utilicé:
fuente
Esta es probablemente una respuesta novata, pero: uso TortoiseGit para Windows y tiene una buena característica llamada REVERT. Entonces, lo que debe hacer para revertir sus cambios locales no escalonados no acelerados es:
fuente