name - git tag stack overflow
Eliminar una carpeta de git tracking (5)
Necesito excluir una carpeta (nombre cargado) del seguimiento. Traté de correr
git rm -r --cached wordpress/wp-content/uploads
y después de eso agregué el camino a .gitignore
/wordpress/wp-content/uploads
pero cuando ejecuté el git status
se muestran como eliminados. Si intento confirmar los cambios, los archivos se eliminarán, no solo se eliminarán del seguimiento.
¿Qué estoy haciendo mal?
También he intentado
git update-index --assume-unchanged <file>
pero esto parece deshacer el seguimiento de archivos solamente. Pero necesito eliminar una carpeta completa (incluidas las subcarpetas) del seguimiento.
De la documentación de git:
Otra cosa útil que puede querer hacer es mantener el archivo en su árbol de trabajo, pero eliminarlo de su área de preparación. En otras palabras, es posible que desee mantener el archivo en su disco duro pero que Git no lo siga rastreando. Esto es particularmente útil si olvidó agregar algo a su archivo .gitignore y lo montó accidentalmente, como un archivo de registro grande o un grupo de archivos compilados .a. Para hacer esto, usa la opción --cached:
$ git rm --cached readme.txt
Así que tal vez no incluya la "-r"?
Esto funciona para mí:
git rm -r --cached --ignore-unmatch folder_name
--ignore-unmatch
es importante aquí, sin esa opción git saldrá con un error en el primer archivo que no esté en el índice.
Me encontré con esta pregunta mientras buscaba en Google "git remove folder from tracking". La pregunta del OP me lleva a la respuesta. Lo estoy resumiendo aquí para las generaciones futuras.
Pregunta
¿Cómo elimino una carpeta de mi repositorio git sin eliminarla de mi máquina local (es decir, el entorno de desarrollo)?
Responder
Paso 1. Agrega la ruta de la carpeta al archivo .gitignore
raíz de tu repo.
path_to_your_folder/
Paso 2. Elimina la carpeta de tu git local de seguimiento, pero guárdala en tu disco.
git rm -r --cached path_to_your_folder/
Paso 3. Empuje sus cambios a su repositorio git.
La carpeta se considerará "eliminada" desde el punto de vista de Git (es decir, se encuentra en el historial, pero no en la última confirmación, y la gente que saque de este repositorio obtendrá los archivos eliminados de sus árboles), pero permanecerá en su directorio de trabajo porque has usado --cached
.
Para olvidar el directorio, agregue /*/*
recursivamente a la ruta:
git update-index --assume-unchanged wordpress/wp-content/uploads/*/*
Usar git rm --cached
no es bueno para la colaboración. Más detalles aquí: ¿Cómo detener el seguimiento e ignorar los cambios en un archivo en Git?
Paso 2.5: Confirma tus cambios:
>git commit
¡Si presionas sin hacer esto primero no hace nada!