Tengo un proyecto que estoy implementando en Heroku . El árbol de código fuente incluye un montón de archivos mp3 (el sitio web será para un proyecto de grabación en el que estuve muy involucrado).
Me gustaría poner el código fuente en GitHub , pero GitHub tiene un límite de 300 MB en sus cuentas gratuitas. No quiero usar 50 MB de mi límite en un montón de archivos mp3. Obviamente, podría agregarlos al .gitignore
archivo para mantenerlos fuera de mi repositorio.
Sin embargo, lo uso en Heroku usando git push heroku
. Los archivos mp3 deben estar presentes en la rama que envío a Heroku para que se implementen.
Idealmente, me gustaría tener .gitignore
los archivos mp3 en mi rama maestra local para que cuando lo transfiera a GitHub, los mp3 no estén incluidos. Luego mantendría una rama de producción local que tiene los mp3 comprometidos en lugar de ignorados. Para implementar, fusionaría master en producción y luego empujaría la rama de producción a Heroku.
No puedo hacer que esto funcione bien.
Aquí hay un ejemplo de lo que estoy tratando de hacer ...
$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored
En este punto, Foo.ignored es ignorado en mi rama maestra, pero todavía está presente, por lo que mi proyecto puede usarlo.
$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"
Ahora tengo una rama con estos archivos comprometidos, como quiero. Sin embargo, cuando vuelvo a mi rama maestra, Foo.ignored se ha ido.
¿Alguien tiene alguna sugerencia para una mejor manera de configurar esto?
Editar: solo para aclarar, quiero que los archivos mp3 estén presentes en ambas ramas para que cuando ejecute el sitio localmente (usando cualquiera de las ramas) el sitio funcione. Solo quiero que los archivos se ignoren en una rama, por lo que cuando presiono a GitHub no se presionan también. Por lo general, .gitignore funciona bien para este tipo de cosas (es decir, mantener una copia local de un archivo que no se incluye en una inserción a un control remoto), pero cuando cambio a la rama con los archivos registrados y luego vuelvo a rama con los archivos ignorados, los archivos desaparecen.