Eu tenho um projeto que estou implantando no Heroku . A árvore do código-fonte inclui um monte de arquivos mp3 (o site será para um projeto de gravação com o qual eu estava muito envolvido).
Eu gostaria de colocar o código-fonte no GitHub , mas o GitHub tem um limite de 300 MB em suas contas gratuitas. Não quero usar 50 MB do meu limite em vários arquivos mp3. Obviamente, eu poderia adicioná-los ao .gitignore
arquivo para mantê-los fora do meu repositório.
No entanto, eu implanto no Heroku usando git push heroku
. Os arquivos mp3 devem estar presentes no ramo que envio ao Heroku para que eles sejam implantados.
Idealmente, eu gostaria .gitignore
dos arquivos mp3 em minha ramificação principal local, para que quando eu enviar isso para o GitHub, os mp3s não sejam incluídos. Então, eu manteria um ramo de produção local que tenha os mp3s confirmados em vez de ignorados. Para implantar, eu mesclaria o mestre na produção e depois enviaria o ramo de produção para o Heroku.
Não consigo fazer isso funcionar direito.
Aqui está um exemplo do que estou tentando fazer ...
$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored
Neste ponto, Foo.ignored é ignorado em minha ramificação principal, mas ainda está presente, para que meu projeto possa usá-lo.
$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"
Agora eu tenho uma ramificação com esses arquivos confirmados, como eu quero. No entanto, quando volto ao meu ramo principal, o Foo.ignored se foi.
Alguém tem alguma sugestão para uma maneira melhor de configurar isso?
Editar: apenas para esclarecer, quero que os arquivos mp3 estejam presentes nos dois ramos para que, quando eu executo o site localmente (usando um dos ramos), o site funcione. Eu só quero que os arquivos sejam ignorados em uma ramificação; portanto, quando eu envio para o GitHub, eles também não são enviados. Normalmente, o .gitignore funciona bem para esse tipo de coisa (ou seja, manter uma cópia local de um arquivo que não é incluído em um envio para um controle remoto), mas quando eu alterno para o ramo com os arquivos verificados e, em seguida, de volta ao arquivo Quando os arquivos são ignorados, os arquivos desaparecem.