Alguien en mi equipo envió un archivo grande al servidor git y todos en el equipo ahora tienen una clonación del proyecto con el archivo grande.Cómo eliminar archivos grandes de forma permanente para todo el equipo
Seguí la guía en http://help.github.com/removing-sensitive-data/ y funciona tanto en mi árbol de fuentes local como en el servidor remoto. Pero una vez que otra persona obtiene los datos nuevos del servidor remoto, volverá a introducir fácilmente el archivo grande presionando nuevas confirmaciones en el servidor.
Normalmente, un miembro del equipo hará lo siguiente para compartir su compromiso con los demás:
git fetch origin
git rebase origin/master
git push origin
En el paso de 'rebase', el archivo grande de edad se vuelve a introducir en sus commits locales. Por supuesto, una forma directa es exigir a todos en el equipo que vuelvan a clonar el proyecto después de eliminar el archivo grande, pero no todos estarían felices de hacerlo. Estoy encontrando otra forma que no sea volver a clonar el proyecto completo para todos.
¿Alguna sugerencia? Gracias.
No veo cómo van a introducir el objeto gigante si empujan de nuevo. Un empuje solo empuja a los objetos alcanzables por las confirmaciones que se encuentran en cualquiera de las confirmaciones que están en el old_commit..new_commit. –
Supongamos que tiene un historial de confirmación A-B-C-D-E. Algún tipo agrega el objeto grande en la confirmación C. A continuación, elimino el objeto, reescribo el historial de C y paso el nuevo historial al servidor por la fuerza. La historia ahora es A-B-C'-D'-E '. Otro miembro ya ha clonado todo el proyecto al principio y su historia local también es A-B-C-D-E. Después de recuperar el nuevo historial, las confirmaciones locales divergieron, es decir, A-B-C'-D'-E 'en origen/maestro, mientras que A-B-C-D-E en la rama maestra. Después de la rebase, la nueva historia es como A-B-C'-D'-E'-C-D-E, luego él empuja al servidor - se reintroduce el antiguo compromiso C. –