Используя git, как мне проигнорировать файл в одной ветви, но зафиксировал ли он в другой ветви?

У меня есть проект, который я развертываюHeroku, Дерево исходного кода включает в себя кучу mp3-файлов (сайт будет для проекта записи, с которым я был активно связан).

Я хотел бы поместить исходный код для этого наGitHub, но у GitHub есть ограничение в 300 МБ для их бесплатных аккаунтов. Я не хочу использовать 50 МБ своего лимита на кучу mp3-файлов. Очевидно, я мог бы добавить их к.gitignore файл, чтобы держать их подальше от моего репо.

Тем не менее, я разверну в Heroku используяgit push heroku, Файлы MP3 должны присутствовать в ветке, которую я отправляю в Heroku, чтобы они были развернуты.

В идеале я бы хотел.gitignore mp3-файлы в моей локальной ветке master, поэтому, когда я отправляю их на GitHub, mp3-файлы не включаются. Тогда я бы оставил местную производственную ветку, в которой mp3 записаны, а не проигнорированы. Чтобы развернуть, я бы слил мастера с производством, а затем отправил производственный филиал в Heroku.

Я не могу заставить это работать правильно.

Вот пример того, что я пытаюсь сделать ...

$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored

На данный момент Foo.ignored игнорируется в моей основной ветке, но он все еще присутствует, поэтому мой проект может его использовать.

$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"

Теперь у меня есть ветка с этими файлами, как я хочу. Однако, когда я переключаюсь обратно в свою основную ветку, Foo.ignored больше нет.

Кто-нибудь получил какие-либо предложения для лучшего способа настроить это?

Изменить: просто чтобы уточнить, я хочу, чтобы mp3-файлы присутствовали в обеих ветках, чтобы при работе сайта локально (с использованием любой ветви) сайт работал. Я просто хочу, чтобы файлы игнорировались в одной ветке, поэтому, когда я отправляю на GitHub, они также не выталкиваются. Обычно .gitignore хорошо работает для такого рода вещей (т.е. для сохранения локальной копии файла, который не включается в push-уведомление на удаленном компьютере), но когда я переключаюсь на ветку с проверенными файлами, а затем возвращаюсь к ветка с файлами игнорируется, файлы исчезают.

Ответы на вопрос(8)

Ваш ответ на вопрос