Ir a control remoto del repository local: Git y olvidar files grandes

Soy un novato relativamente nuevo, como estás a punto de ver. Así que, por favor, perdona mi pobre uso de la terminología de git, todavía estoy aprendiendo.

Resumen sucinto del problema: quiero poner mi repository local en GitHub, pero tengo algunos files rastreados con anterioridad que son demasiado grandes.

Antecedentes: esta mañana tenía un repository local donde se rastreaban todo tipo de files: scripts R, .RData, .csv, etc. Decidí que quería poner mi repository a disposition del público empujándolo a GitHub.

Cuando traté de presionar (usando git remote add origin https://github.com/me/repo.git seguido de git push -u origin master ), me di count de que algunos de mis files de datos grandes eran demasiado grandes para GitHub. Decidí que estaría bien si los files .RData no se enviaran a GitHub, y git no los rastreara (aunque no quiero eliminarlos localmente). Pero no puedo entender cómo hacer que esto suceda.

Cosas que he intentado hasta ahora:

  1. Primero agregué files .RData al file .gitignore. Rápidamente me di count de que esto no hace nada para los files que ya están siendo rastreados.
  2. git rm -r --cached . seguido de git commit -am "Remove ignonetworking files" , pensando que esto me ayudaría a olvidarme de todos esos enormes files que ignoré.
  3. Luego de seguir la página de ayuda de git, probé git commit --ammend -CHEAD , pero todavía no podía presionar.
  4. Intenté usar el BFG , pero no llegué muy lejos con él porque aparentemente no encontró ningún file de más de 100M. Estaba claro que algo iba mal, pero decidí no search más.
  5. Siguiendo algunos consejos que encontré AQUÍ , probé git filter-branch --tree-filter 'git rm -r -f --ignore-unmatch *.RData' HEAD . Definitivamente esto hizo algo, pero todavía no podía empujar. Sin embargo, en lugar de la enorme list de files demasiado grandes, ahora tengo dos files que son demasiado grandes (aunque ya no figuran en la list otros files .RData en el mismo directory).

Después de mi último git push -u origin master --force , esta es la printing en la terminal:

 Counting objects: 1163, done. Delta compression using up to 8 threads. Compressing objects: 100% (1134/1134), done. Writing objects: 100% (1163/1163), 473.07 MiB | 6.80 MiB/s, done. Total 1163 (delta 522), reused 0 (delta 0) remote: error: GH001: Large files detected. remote: error: Trace: 4ce4aa642e458a7a715654ac91c56af4 remote: error: See http://git.io/iEPt8g for more information. remote: error: File Results/bigFile1.RData is 166.51 MB; this exceeds GitHub's file size limit of 100 M remote: error: File Results/bigFile2.RData is 166.32 MB; this exceeds GitHub's file size limit of 100 MB To https://github.com/me/repo.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://github.com/me/repo.git' 

Si no lo has adivinado, realmente no sé lo que estoy haciendo … esencialmente estoy intentando cualquier fragment de código que pueda encontrar, y veo si me permite presionar. Todos mis datos y files están respaldados, así que estoy experimentando descaradamente.

Dado que estoy dispuesto a no rastrear los enormes files .RData, ¿cómo puedo get mi repository local al punto en que pueda enviarlo a GitHub?

Cualquier ayuda sería muy apreciada. ¡Gracias!

Estoy bastante seguro de que solo tendrá que eliminarlos de su historial de .git repo. No solo eliminarlos de la versión más reciente, deben eliminarse de haber existido alguna vez en su repository.

La técnica está cubierta en otro lugar, vea esta publicación Stackoverflow o la herramienta BFG .