ver una repositorio rama locales limpiar historial eliminar carpeta branches borrar archivo git

una - ¿Cómo borro mi directorio de trabajo local en git?



git ver branches locales (6)

Para cambiar a otra rama, descartar todos los cambios no confirmados (por ejemplo, como resultado del extraño manejo de los finales de línea de Git):

git checkout -f <branchname>

Tuve una copia de trabajo con cientos de archivos modificados (pero git diff --ignore-space-at-eol vacío ( git diff --ignore-space-at-eol ) que no pude deshacerme de ninguno de los comandos que leí aquí, y git checkout <branchname> ganó '' t trabajo, ya sea - a menos que tenga la opción -f (o --force ).

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo borrar mi directorio de trabajo en git?


Para restablecer un archivo específico al último estado confirmado (para descartar los cambios no confirmados en un archivo específico):

git checkout thefiletoreset.txt

Esto se menciona en la salida de git status :

(use "git checkout -- <file>..." to discard changes in working directory)

Para restablecer todo el repositorio al último estado confirmado:

git reset --hard

Para eliminar archivos sin seguimiento, generalmente solo elimino todos los archivos de la copia de trabajo (¡pero no la carpeta .git/ !), Luego hago git reset --hard que git reset --hard lo deja con los archivos confirmados.

Una mejor manera es usar git clean : ( Advertencia : usar la -x como se muestra a continuación hará que git elimine los archivos ignorados).

git clean -d -x -f

eliminará los archivos sin seguimiento, incluidos los directorios ( -d ) y los archivos ignorados por git ( -x ). Reemplace el argumento -f con -n para realizar una ejecución en seco o -i para el modo interactivo y le indicará qué se eliminará.

Enlaces relevantes:


Para restablecer un archivo específico como lo sugiere el estado de git:

git checkout <filename>

Para restablecer una carpeta

git checkout <foldername>/*


Podría crear una confirmación que contenga una copia de trabajo vacía.

Este es un enfoque generalmente seguro y no destructivo porque no implica el uso de ningún mecanismo de reinicio de fuerza bruta. Primero esconde todo el contenido administrado con git checkout empty , luego puede revisar y eliminar manualmente cualquier contenido no administrado.

## create a stand-alone, tagged, empty commit true | git mktree | xargs git commit-tree | xargs git tag empty ## clear the working copy git checkout empty

Su copia de trabajo ahora debe estar libre de cualquier contenido administrado. Todo lo que queda son archivos no gestionados y la propia carpeta .git .

Para volver a llenar su copia de trabajo ...

git checkout master ## or whatever branch you will be using

Si eres una persona con visión de futuro, puedes comenzar tu repositorio con el pie derecho basando todo en un compromiso inicial vacío ...

git init git commit --allow-empty --allow-empty-message -m "" git tag empty ...

Hay varios usos para un árbol de trabajo vacío etiquetado. Mi favorito en este momento es despoblar la raíz bajo un conjunto de subcarpetas git worktree .


Todas las respuestas hasta ahora retienen los compromisos locales. Si realmente eres serio, puedes descartar todas las confirmaciones locales y todas las ediciones locales haciendo:

git reset --hard origin/branchname

Por ejemplo:

git reset --hard origin/master

Esto hace que su repositorio local coincida exactamente con el estado del origen (aparte de los archivos sin seguimiento).

Si accidentalmente hiciste esto después de solo leer el comando, y no lo que hace :), usa git reflog para encontrar tus antiguos compromisos.


git clean -df

Edit: no está bien anunciado, pero git clean es realmente útil. Git Ready tiene una buena introducción a Git git clean .

Actualización: se eliminó la marca x según la sugerencia del comentario a continuación.