¿Cómo eliminar un directorio del repositorio de git?
1236
Tengo 2 directorios en mi repositorio de GitHub. Me gustaría eliminar uno de ellos. ¿Cómo podría hacer eso sin eliminar y volver a crear todo el repositorio?
@Iarsmans: Sí, 6 archivos. Ambos directorios son idénticos, excepto que uno está en mayúsculas y otro en minúsculas.
Sahat Yalkabov
Respuestas:
2328
Eliminar el directorio de git y local
Puede pagar 'master' con ambos directorios;
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Eliminar el directorio de git pero NO local
Como se menciona en los comentarios, lo que generalmente desea hacer es eliminar este directorio de git pero no eliminarlo por completo del sistema de archivos (local)
Tuve la misma situación exacta. Cuando lo intenté git rm -r myFolderfuncionó, pero también eliminé todo del directorio "MyFolder". Tuve que revertir todo en el directorio "MyFolder" y luego confirmar.
Justin
240
@Justin Para eliminar solo de git y dejar el sistema de archivos como está, usegit rm -r --cached myFolder
karmakaze el
32
El mensaje de error que recibo es: fatal: el 'directorio' de la ruta de acceso no coincide con ningún archivo.
user2441441
3
@ user2441441 Recibí este error cuando intentaba eliminar una carpeta / archivo que no se agregó al repositorio en absoluto
lukeatdesignworks
3
git rm -r --cached directory/solo se elimina de git rastreado, pero la estructura del repositorio permanece.
Néstor
287
Para eliminar la carpeta / directorio solo del repositorio de git y no del local, pruebe 3 comandos simples.
Pasos para ignorar esa carpeta en las próximas confirmaciones
Para ignorar esa carpeta de las próximas confirmaciones, cree un archivo en la raíz llamado .gitignore
y coloque el nombre de esa carpeta en él. Puedes poner tantos como quieras
También necesitará hacer git rm -r --cached FolderName git commit -m "Carpeta eliminada del repositorio" en su otra computadora y luego hacer un tirón para mantenerlo sincronizado.
Simon
1
¿Esto eliminará el directorio desde el punto en que se agregó al repositorio hasta ahora? ¿O es solo para eliminar el directorio y volver a comprometerlo con el repositorio .git?
alpha_989
1
¡Excelente! ¡Trabajando!
BeingCoders
2
Bien explicado, buena respuesta
Rakshit Shah el
1
bien hecho. En mi máquina, el tercer paso no funciona. Pero funciona si se cambia a $ git push
Hong
82
Si, por alguna razón, lo que dice karmakaze no funciona, puede intentar eliminar el directorio que desea usar o con el navegador del sistema de archivos (por ejemplo, en el Explorador de archivos de Windows). Después de eliminar el directorio, emitir el comando: git add -A
y luego git commit -m 'deleting directory'
y luego git push origin master.
Si elimina los archivos en el directorio (con lo git rmque explican las otras respuestas), entonces el directorio ya no existe en lo que respecta a git. No puede confirmar un directorio vacío, ni puede eliminar uno.
Esto es diferente a la subversión donde tiene que hacerlo explícitamente svn rm emptyfolder/, y por cierto la manpágina de git se describe a sí misma como "el rastreador de contenido estúpido"
Actualmente, el diseño del índice git (área de preparación) solo permite que se enumeren los archivos, y nadie lo suficientemente competente como para realizar el cambio para permitir directorios vacíos se ha preocupado lo suficiente por esta situación para remediarlo.
Los directorios se agregan automáticamente al agregar archivos dentro de ellos. Es decir, los directorios nunca tienen que agregarse al repositorio y no se rastrean por sí mismos.
Puede decir " git add <dir>" y agregará archivos allí.
Si realmente necesita que exista un directorio en las cajas, debe crear un archivo en él. .gitignore funciona bien para este propósito; puede dejarlo vacío o completar los nombres de los archivos que espera que aparezcan en el directorio.
Quería eliminar un directorio vacío (carpeta) que creé, git no puede eliminarlo, después de algunas investigaciones aprendí que Git no rastrea directorios vacíos. Si tiene un directorio vacío en su árbol de trabajo, simplemente debe eliminarlo con
Puede usar el Árbol de fuentes de Attlasian (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Simplemente seleccione los archivos del árbol y presione el botón "Eliminar" en la parte superior. Los archivos se eliminarán del repositorio local y la base de datos local de git. Luego comprometerse, luego empujar.
Esto es lo que hago también. Sin embargo, ha sido muy fácil de hacer, aprender comandos de git es algo bueno para saber.
Micah Montoya
1
Uno de mis colegas sugirió BFG Repo-Cleaner, que creo que es poderoso. No solo elimina datos no deseados, sino que también limpia su repositorio de cualquier información de confirmación relacionada.
Respuestas:
Eliminar el directorio de git y local
Puede pagar 'master' con ambos directorios;
Eliminar el directorio de git pero NO local
Como se menciona en los comentarios, lo que generalmente desea hacer es eliminar este directorio de git pero no eliminarlo por completo del sistema de archivos (local)
En ese caso, use:
fuente
git rm -r myFolder
funcionó, pero también eliminé todo del directorio "MyFolder". Tuve que revertir todo en el directorio "MyFolder" y luego confirmar.git rm -r --cached myFolder
git rm -r --cached directory/
solo se elimina de git rastreado, pero la estructura del repositorio permanece.Para eliminar la carpeta / directorio solo del repositorio de git y no del local, pruebe 3 comandos simples.
Pasos para eliminar el directorio
Pasos para ignorar esa carpeta en las próximas confirmaciones
El archivo .gitignore se verá así
fuente
Si, por alguna razón, lo que dice karmakaze no funciona, puede intentar eliminar el directorio que desea usar o con el navegador del sistema de archivos (por ejemplo, en el Explorador de archivos de Windows). Después de eliminar el directorio, emitir el comando:
git add -A
y luego
git commit -m 'deleting directory'
y luego
git push origin master
.fuente
Puedes probar esto:
git rm -rf <directory_name>
Obligará a eliminar el directorio.
fuente
Si elimina los archivos en el directorio (con lo
git rm
que explican las otras respuestas), entonces el directorio ya no existe en lo que respecta a git. No puede confirmar un directorio vacío, ni puede eliminar uno.Esto es diferente a la subversión donde tiene que hacerlo explícitamente
svn rm emptyfolder/
, y por cierto laman
página de git se describe a sí misma como "el rastreador de contenido estúpido"Una respuesta sobre "Cómo agrego un directorio vacío a un repositorio de git" enlaza con las preguntas frecuentes sobre este tema :
fuente
Ya había comprometido la carpeta antes y quiero eliminar el directorio en el historial también.
Hice lo siguiente:
Agregar carpeta a
.gitignore
:Eliminar de todas las confirmaciones:
eliminar las referencias de los viejos commits:
Asegúrese de que todas las referencias antiguas se eliminen por completo
Realizar una recolección de basura
empujar sus cambios al repositorio en línea:
Ya terminaste aquí.
Pero puede hacer lo siguiente para empujar todos los cambios a todas las ramas con: ¡Pero tenga cuidado con este comando!
Después de eso, la carpeta se eliminó de git, pero no se eliminó del disco local.
fuente
para eliminar carpetas vacías
Quería eliminar un directorio vacío (carpeta) que creé, git no puede eliminarlo, después de algunas investigaciones aprendí que Git no rastrea directorios vacíos. Si tiene un directorio vacío en su árbol de trabajo, simplemente debe eliminarlo con
No hay necesidad de involucrar a Git.
fuente
Vaya a su directorio git y luego escriba el siguiente comando: rm -rf < Nombre del directorio >
Después de eliminar el directorio, confirme los cambios: git commit -m "Su mensaje de confirmación"
Luego, simplemente presione los cambios en el directorio GIT remoto: git push origin < Nombre de la sucursal >
fuente
Puede eliminar la carpeta localmente y luego presionar, como sigue:
fuente
Usualmente uso
git add --all
para eliminar archivos / carpetas de repositorios remotosmaster
puede ser reemplazado por cualquier otra rama del repositorio.fuente
Puede usar el Árbol de fuentes de Attlasian (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Simplemente seleccione los archivos del árbol y presione el botón "Eliminar" en la parte superior. Los archivos se eliminarán del repositorio local y la base de datos local de git. Luego comprometerse, luego empujar.
fuente
Uno de mis colegas sugirió BFG Repo-Cleaner, que creo que es poderoso. No solo elimina datos no deseados, sino que también limpia su repositorio de cualquier información de confirmación relacionada.
fuente
Para agregar un nuevo directorio:
Pero ahora Git no está al tanto de este nuevo directorio, porque Git realiza un seguimiento de los archivos, no de los directorios. DIRECTORIO
Git no se dará cuenta del cambio que hemos realizado, por lo que agregamos un
.keep
archivo oculto para que Git lo note con este nuevo cambio.Ahora, si golpeas a
git status
Git , estarás al tanto de los cambios.Y si desea eliminar el directorio, debe usar este comando.
Y si marcó usando
git status
, verá que el directorio se ha eliminado.fuente
El primer comando git necesita saber quién eres antes de eliminar algo
fuente
Una combinación de las 2 respuestas me funcionó
si aún muestra alguna advertencia, elimine los archivos manualmente
fuente