Pregunta ¿Cómo borro mi directorio de trabajo local en git? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

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


605
2018-03-23 13:43


origen


Respuestas:


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

git checkout thefiletoreset.txt

Esto se menciona en el git status salida:

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

Para restablecer todo el repositorio al último estado comprometido:

git reset --hard

Para eliminar archivos sin seguimiento, generalmente solo elimino todos los archivos en la copia de trabajo (pero no el .git/ carpeta!), luego haz git reset --hard que lo deja solo con archivos comprometidos.

Una mejor manera es usar git clean: (Advertencia: utilizando el -x marcar de la siguiente manera provocará que git elimine archivos ignorados).

git clean -d -x -f

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

Enlaces relevantes:


923
2018-03-24 00:57



git clean -df

Editar: No está bien publicitado, pero git clean es realmente útil. Git Ready tiene un buena introducción a git clean.

Actualización: eliminó el x indicador basado en la sugerencia en el comentario a continuación


114
2018-03-23 13:45



Todas las respuestas conservan compromisos locales. Si eres De Verdad En 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 tu repositorio local exactamente igual el estado del origen (que no sean archivos sin seguimiento).

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


34
2017-12-19 00:24



Puede 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 mecanismos de restablecimiento de fuerza bruta. Primero ocultas todo el contenido administrado git checkout empty, entonces puede revisar y eliminar manualmente cualquier contenido no administrado que permanezca.

## create and initialize a temporary repo with an empty working copy
(
mkdir ./temp-repo && cd ./temp-repo && git init
touch ./temp-file && git add . && git commit -m "almost empty"
git rm ./temp-file && git commit -m "empty"
git tag empty
)

## fetch the history from the temporary repo
git remote add empty ./temp-repo && git fetch --tags empty && git remote rm empty
gvfs-trash ./temp-repo ## delete the temporary repo

## clear the working copy
git checkout empty

Su copia de trabajo ahora debería estar libre de cualquier contenido administrado. Todo lo que queda son archivos no administrados y .git carpeta en sí.

Para volver a llenar su copia de trabajo ...

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

9
2018-01-25 05:23



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

git checkout -f <branchname>

Tenía una copia de trabajo con cientos de archivos modificados (pero vacía git diff --ignore-space-at-eol) que no pude eliminar con ninguno de los comandos que leí aquí, y git checkout <branchname> tampoco funcionará, a menos que se le haya dado -f (o --force) opción.


7
2017-10-18 16:02



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

git checkout <filename>

Para restablecer una carpeta

git checkout <foldername>/*

1
2018-03-21 18:09