Использование 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
Итак, вы можете нажать на ветку герою на герою, а не на ветку мастера.