Necesito excluir una carpeta (carga de nombres) 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 corrí git status
, aparecen como eliminados. Si trato de 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 destrabar solo archivos. Pero necesito eliminar una carpeta completa (incluidas las subcarpetas) del seguimiento.
reset --hard
, lo hará.pull
compromete en otro lugar, esos archivos se eliminarán del nuevo sistema.Respuestas:
Encontré 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, entorno de desarrollo)?
Responder
Paso 1. Agregue la ruta de la carpeta al
.gitignore
archivo raíz de su repositorio .Paso 2. Elimina la carpeta de tu seguimiento local de git, pero mantenla en tu disco.
Paso 3. Envía tus cambios a tu repositorio de git.
La carpeta se considerará "eliminada" desde el punto de vista de Git (es decir, están en la historia pasada, pero no en la última confirmación, y las personas que retiren de este repositorio eliminarán los archivos de sus árboles), pero permanezcan en su directorio de trabajo debido a que ha utilizado
--cached
.fuente
Esto funciona para mi:
--ignore-unmatch
es importante aquí, sin esa opción git saldrá con error en el primer archivo que no está en el índice.fuente
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Para olvidar el directorio recursivamente agregue
/*/*
a la ruta: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?fuente
Sé que este es un hilo antiguo, pero solo quería agregar un poco ya que la solución marcada no resolvió el problema para mí (aunque lo intenté muchas veces).
La única forma en que pude detener el seguimiento de la carpeta desde git form fue hacer lo siguiente:
git rm -r --cached your_folder/
your_folder/
a .gitignoreAhora debería ver que la carpeta ya no se rastrea.
No me preguntes por qué simplemente borrar el caché no funcionó para mí, no soy un súper asistente de Git pero así es como resolví el problema.
fuente
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 rastree más. Esto es particularmente útil si olvidó agregar algo a su archivo .gitignore y lo organizó accidentalmente, como un archivo de registro grande o un montón de archivos compilados .a. Para hacer esto, use la opción --cached:
Entonces, ¿quizás no incluya el "-r"?
fuente
--cached
. La-r
opción es para "recursivo", que debe incluirse en esta instancia.