¿Cómo puedo borrar mi directorio de trabajo en git?¿Cómo borro mi directorio de trabajo local en git?
Respuesta
Para restablecer un archivo específico a este último cometido estado (para descartar los cambios no comprometidos en un archivo específico):
Esto se menciona en la salida git status
:
(use "git checkout -- <file>..." to discard changes in working directory)
Para restablecer todo el repositorio al último estado comprometida: (! Pero no la carpeta .git/
)
git reset --hard
para eliminar archivos sin seguimiento, por lo general sólo eliminar todos los archivos en la copia de trabajo, y luego hacer git reset --hard
cuales lo deja solo con los archivos comprometidos.
Una mejor manera es utilizar git clean
: (Advertencia:. Usar la bandera -x
como a continuación hará que git para borrar ficheros ignorados)
git clean -d -x -f
eliminará los archivos sin seguimiento, incluidos los directorios (-d
) y archivos ignorados por git (-x
). Reemplace el argumento -f
con -n
para ejecutar en seco o -i
para el modo interactivo y le dirá qué se eliminará.
enlaces pertinentes:
- git-reset man page
- git-clean man page
- git ready "cleaning up untracked files" (tal como fue anunciado Marko) pregunta
- Stackoverflow "How do you remove untracked files from your git working copy?"
Tenga en cuenta que, de forma predeterminada, 'git clean -d' es insuficiente. También necesita agregar el indicador -f (fuerza). Además, si desea eliminar adicionalmente los archivos ignorados por .gitignore, entonces debe agregar la opción -x. Esto es lo que parece: git clean -xdf –
Creo que te refieres a "directorio de trabajo" en lugar de "repositorio" en la oración "Normalmente solo elimino todos los archivos en el repositorio". –
@Dr. Persona Buen punto, eso está más claro, editado – dbr
git clean -df
Editar: No está bien anunciado, pero git clean
es realmente útil. Git Ready tiene un nice intro to git clean
.
Actualización: se ha eliminado la bandera
x
basado en la sugerencia en el comentario a continuación
Sugiero no utilizar el parámetro '-x', ya que eliminará todo el contenido de gignoler. Digamos que tiene una carpeta llamada '' gitignored '' agregada a '.gitignore', y almacena allí sus archivos que deben ser seguros, también los borra usando el parámetro' -x' – Highmastdon
Vaya. 'git clean -xdf' también eliminó' .gitignore', y no me di cuenta antes de la siguiente confirmación. Ya no ignoraré '.gitignore'. :) – Grastveit
@Grastveit 'git clean -xdf' eliminará' .gitignore' si y solo si no se ha agregado a, por lo tanto, funciona según lo previsto. – Marko
Todas las respuestas hasta el momento retienen commits locales. Si usted es realmente grave, puede descartar todos los commits locales y todas las modificaciones locales haciendo:
git reset --hard origin/branchname
Por ejemplo:
git reset --hard origin/master
Esto hace que su repositorio local coincidir exactamente con 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.
¿Es realmente necesario el nombre de la rama? Para mí 'git reset --hard' simplemente funciona para la rama de trabajo actual sin nombre de sucursal. – RBT
Sin la rama, no borra las confirmaciones locales. – dbn
ohh. De acuerdo. Mi observación solo se refería a los archivos modificados localmente y los nuevos no agregados. Por lo tanto, si lo obtuve correctamente, si algún archivo está en etapas o ya se ha confirmado en la sucursal local (no se ha enviado aún), no se limpiará si no utilizo el nombre de la rama explícitamente. ¿Correcto? – RBT
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 ningún mecanismo de reinicio de fuerza bruta. Primero oculta todo el contenido administrado con git checkout empty
, luego 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 la carpeta .git
.
Para repoblar su copia de trabajo ...
git checkout master ## or whatever branch you will be using
Esto también puede ser una buena forma de ahorrar algo de espacio en disco en caso de necesidad. – nobar
Una forma mucho más rápida de crear el pago vacío: 'true | git mktree | xargs git commit-tree | xargs git tag empty' – jthill
@jthill: Parece que funciona, ¡gracias por la sugerencia! – nobar
Para restablecer un archivo específico como git status sugiere:
git checkout <filename>
Para restablecer una carpeta
git checkout <foldername>/*
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>
que tenían una copia de trabajo con cientos de archivos modificados (pero vacío git diff --ignore-space-at-eol
) que no podía deshacerse con cualquiera de los comandos que leí aquí, y git checkout <branchname>
no va a funcionar, ya sea - a menos que reciba la opción -f
(o --force
).
' git checkout -p'? – badp
- 1. Interruptor directorio local de trabajo sin actualizar
- 2. git force push actual directorio de trabajo
- 3. Restableciendo Mi área de trabajo local
- 4. ¿Cómo se actualiza el directorio de trabajo en "git checkout"?
- 5. Empuje el Proyecto Git al Directorio Local
- 6. ¿Cómo borro todas las entidades de mi almacén de datos local de Google App Engine?
- 7. Buscar la revisión de Git de un directorio de trabajo que falta el directorio .git
- 8. ¿Puedo trasladar mi directorio de trabajo Mercurial a otra ubicación?
- 9. ¿Cómo puedo eliminar mi sucursal local en GIT?
- 10. Dist de directorio de trabajo con extensiones de Git
- 11. ¿Cómo borro un archivo del depósito, pero dejo intacta la copia local?
- 12. descargar un archivo en mi directorio de trabajo
- 13. ¿Cómo puedo limpiar mi carpeta .git? Limpié mi directorio de proyectos, pero .git sigue siendo masivo
- 14. Git aplica un parche al directorio de trabajo
- 15. Cuando se usa git, ¿cómo se empuja el directorio de trabajo exacto a un control remoto?
- 16. git ls-tree salida del directorio de trabajo?
- 17. ¿Cómo establecer el directorio de trabajo para Node.js en Windows?
- 18. ¿Cómo borro mi historial de compilación de Jenkins/Hudson?
- 19. ¿Cómo puedo eliminar mi última confirmación en mi repositorio local de git
- 20. ¿Por qué OpenFileDialog cambia mi directorio de trabajo?
- 21. Git flujo de trabajo básico
- 22. ¿Cómo puedo eliminar todos los archivos en mi repositorio de git y actualizar/enviar desde mi repositorio de git local?
- 23. sin cambiar el directorio de trabajo
- 24. Ruta del directorio local
- 25. Cómo muevo mi repositorio de Git local a un repositorio de Git remoto
- 26. Jenkins enlazando a mi repositorio de git local
- 27. vimrc - actual directorio de trabajo
- 28. espejo local Git
- 29. ¿Cómo configurar el directorio de trabajo actual?
- 30. ¿Cómo elimino todos los archivos sin seguimiento de mi directorio de trabajo en Mercurial?
Enfoque interactivo del usuario: git clean -i -fd –