Cómo ignorar un file en Github cuando se hace un git pull

Estoy usando Ruby on Rails 4, Ruby 2.2.2, y estoy desplegando a Heroku. Tengo mis variables secretas configuradas con Heroku config: set y quiero usar Rails.application.secrets.secret_key para acceder a mis secretos.

¿Cuál es la mejor manera de administrar mi file config / secrets con Git y GitHub mientras desarrollo e implementa en Heroku? Tengo mi file de configuration de la siguiente manera:

development: secret_key_base: <value> test: secret_key_base: <value> # Do not keep production secrets in the repository, # instead read values from the environment. production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> # Amazon cnetworkingentials s3_bucket_name: <%= ENV["S3_BUCKET_NAME"] %> aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %> aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %> aws_region: <%= ENV["AWS_REGION"] %> aws_cloud_front: <%= ENV["AWS_CLOUD_FRONT"] %> # Twitter cnetworkingentials twilio_token: <%= ENV["TWILIO_TOKEN"] %> twilio_sid: <%= ENV["TWILIO_SID"] %> twilio_number: <%= ENV["TWILIO_NUMBER"] %> 

Había introducido cambios en mi file incluso con el file .gitignore porque Git lo había rastreado en el pasado. Dejé de rastrear mi file config / secrets.yml en Git, así que no introduzco cambios, pero cuando lo selecciono desde el maestro, mi file config / secrets se reemplaza con solo las cnetworkingenciales de producción.

Se puede eliminar por completo un file de un repository git, pero es tedioso.

Sin embargo, puedes eliminarlo fácilmente de los files actuales. git rm yourfile con git rm yourfile y confirma y presiona eso. Eso eliminará su file local, por lo que es posible que desee copyrlo primero. Puede agregarlo nuevamente después de que haya enviado la eliminación.

Tenga en count que .gitignore no afecta a los files que ya están bajo control de versión. Sin embargo, eliminar dichos files explícitamente funciona. La copy no debe rastrearse más.

Git no proporciona un medio para tiradas parciales; sin embargo, en su situación, todo lo que necesita hacer es definir sus keys variables de entorno con el mismo nombre tanto para su producción como para su desarrollo. Hacerlo le permitirá dejar el file solo y utilizar las keys de valores tanto en su entorno local como en sus entornos de producción sin realizar ningún cambio. Si desea enviar nuevas confirmaciones sin presionar ningún cambio en este file, puede hacerlo mediante el uso de

 git update-index --asume-unchanged <filenameHere> 

Esto le permitirá mantener este file en su local sin presionarlo para que coincida con el rest de sus cambios. Lamentablemente, no hay manera de que sepa hacer lo contrario y excluir ciertos files en el tirón.

Si hay secretos en el file que ha cometido que no puede cambiar / rotar fácilmente, hay algunas maneras de eliminar por completo la información confidencial previamente comprometida de git.

La guía de Github tiene un buen artículo para esto.