Использование github для размещения общедоступных репозиториев git, гарантируя, что конфиденциальные файлы данных остаются без следа

Мое приложение размещено на Heroku, и у меня есть публичный репортаж github.

В моем приложении есть файл конфигурации, содержащий мои учетные данные amazon S3. Это важно, чтобы файл попал в герою, но не github.

Итак, я думал, что могу нажать мою главную ветвь на герою и создать отдельную ветку github и убедиться, что файл .gitignore ссылается на мой файл s3.yml. Тогда я мог бы просто сделать git push origin github: master ", чтобы направить ветку github на github.com

Это отлично работает для первого фиксации.

Но затем я переключусь на свою ветку мастера, напишу какой-нибудь потрясающий код, а затем нажму все это на героку. Затем я вернусь к своей ветке github и сделаю "git master merge", чтобы новый код был добавлен к нему. Но это приводит к тому, что файлы s3.yml и gitignore из главной ветки копируются в ветвь github. Cue от "голова к столу".

Есть ли какие-либо советы о том, как поддерживать синхронизацию веток, гарантируя, что необработанные файлы остаются без следа. Могу ли я сказать git не сливаться в нежелательный файл S3.yml и другой файл .gitignore?

Я порчу мертвую лошадь здесь? Я не могу оправдать оплату частной учетной записи github, но я полагаю, что ответ будет включать в себя только то, что.... или переход к проектному блоку

Я надеюсь, что эта проблема сводится только к моим умениям git и что есть способ... спасибо заранее

EDIT: Принятый ответ - отличное решение, но я только что нашел новый, который мне больше нравится. Читайте об этом здесь: http://docs.heroku.com/config-vars - у тех умных людей в Heroku есть ответ на все... серьезно удивительный

Ответ 1

Но это приводит к тому, что файлы s3.yml и gitignore из главной ветки будут скопированы в ветвь github

Вы можете избежать этого с помощью настраиваемого драйвера слияния, который будет следить за тем, чтобы файл .gitignore ветки github всегда сохранял свой контент по сравнению с объединенным с master.

См. Как сообщить git, чтобы всегда выбирать локальную версию для конфликтующих слияний в определенном файле?

Ответ 2

в SVN это называется "игнорирование файлов", поэтому я предполагаю, что это будет что-то похожее в GIT - я не использую GIT, поэтому не цитируйте меня на этом, но я нашел эту ссылку на сайт GITHub:

http://github.com/guides/ignore-for-git

Надеюсь, что поможет

Ответ 3

Вы можете перенести "опасные" файлы в сторону от git целиком, например, иметь их в ~/.yourapp или что-то в этом роде. (это на самом деле не отвечает на вопрос напрямую, а на то, что много программного обеспечения делает -.fetchmail,.ssh,...) и позволит другим пользователям делать то же самое.

Ответ 4

Если вы используете ветвь с именем heroku в качестве ветки "альтернативного мастера" (с конфиденциальными данными) и старой ветки мастера без конфиденциальных данных, вы всегда можете сделать

git merge master

Итак, вы можете нажать на ветку герою на герою, а не на ветку мастера.