如何在执行git pull时忽略Github上的文件

时间:2016-05-26 23:18:13

标签: ruby-on-rails ruby git heroku github

我正在使用Ruby on Rails 4,Ruby 2.2.2,并部署到Heroku。我的秘密变量配置了Heroku config:set,我想使用Rails.application.secrets.secret_key来访问我的秘密。

在开发和部署到Heroku时,使用Git和GitHub管理配置/机密文件的最佳方法是什么?我的配置文件如下:

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 credentials
  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 credentials
  twilio_token: <%= ENV["TWILIO_TOKEN"] %>
  twilio_sid:   <%= ENV["TWILIO_SID"] %>
  twilio_number: <%= ENV["TWILIO_NUMBER"] %>

我已经将更改推送到我的文件,即使它在.gitignore文件中也是如此,因为它过去曾被Git跟踪过。我停止在Git上跟踪我的config / secrets.yml文件,所以我不推送更改,但是当我从master下拉时,我的config / secrets文件被覆盖只有生产凭据。

3 个答案:

答案 0 :(得分:1)

可以完全从git存储库中删除文件,但这很乏味。

但是,您可以轻松地将其从当前文件中删除。使用git rm yourfile删除它并提交并推送它。这将删除您的本地文件,因此您可能希望先复制它。您可以在提交删除后将其添加回来。

请注意,.gitignore不涉及已受版本控制的文件。但是,明确删除这些文件是有效的。不应再追踪该副本。

答案 1 :(得分:0)

Git并没有提供部分拉动的方法,但在您的情况下,您需要做的就是为生产和开发定义具有相同名称的环境变量键。这样做将允许您单独保留文件并在本地和生产环境中使用值键,而无需更改任何更改。如果您想在不对此文件进行任何更改的情况下推送新提交,则可以使用

执行此操作
var str = "Persons: Amy, bertha, Charlie, Donkey, Evy, Felicia, Ghunter, Hercules, Indica, Jody, Katy, Linsay, Moony, Nigel, Opethry, Phil, Quinton, Ricial, Stefany, Trudy, Ursla, Vlinder, Wendy, Xion, Yvy, Zulu";

var arr = str.split(' ').map(word => word.substr(0, 100)).reduce((acc, word) => {
  acc.length += word.length + 1;
  if (acc.length > 100) {
    acc.length = word.length - 1;
    acc.lines.push([word]);
  } else {
    acc.lines[acc.lines.length - 1].push(word);
  }
  return acc;
},{lines: [[]], length: -1}).lines.map(line => line.join(' '));

console.log(arr);

这将允许您将此文件保留在本地,而不会将其与其余更改一起推送到git。不幸的是,我不知道如何做相反的事情并排除某些文件。

答案 2 :(得分:0)

如果你提交的文件中有秘密,你无法轻易更改/旋转,有几种方法可以从git中完全删除以前提交的敏感信息。

Github指南有good article