【问题标题】:How to specify paths in .gitignore?如何在 .gitignore 中指定路径?
【发布时间】:2017-12-04 14:15:06
【问题描述】:

我正在开发一个 Ruby on Rails 应用程序,使用 git 在利益相关者之间同步代码。该应用程序具有发送电子邮件的能力。每个利益相关者都有自己的 SMTP 提供程序,在安装期间在 config/initializers/smtp.rb 中定义。

ActionMailer::Base.smtp_settings = {
    address: "smtp.emailme.com",
    port: 587,
    domain: "emailme.com",
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: "me@emailme.com",
    password: "Password"
    }

.gitignore 文件定义为:

*.rbc
capybara-*.html
.rspec
/log
/tmp
/public/system
/coverage/
/spec/tmp
**.orig
rerun.txt
pickle-email-*.html

## Environment normalization:
/.bundle
/vendor/bundle

# these should all be checked in to normalize the environment:
# Gemfile.lock, .ruby-version, .ruby-gemset
Gemfile~

config/initializers/smtp.rb

.gitignore 文件在 Github 和我的计算机上是相同的。我试图指定

config/initializers/smtp.rb

/config/initializers/smtp.rb

但无论如何,我计算机上的 smtp.rb 文件会被 Github 上的文件覆盖。反过来也是一样。 我错过了什么?

【问题讨论】:

标签: ruby-on-rails git


【解决方案1】:

正如@oliver 所提到的,该文件不应该存在于 git 上。您可以通过执行从 git 中删除文件

git rm --cached config/initializers/smtp.rb
git commit -m "Removed config file from repo"
git push

请注意--cached,这非常重要,否则您可能会丢失本地目录中的文件。此选项将仅从 repo 中删除文件。

如果您想将目录添加到.gitignore,请参阅:Remove directory from remote repository after adding them to .gitignore

谢谢!

【讨论】:

    【解决方案2】:

    .gitignore 将告诉 git 忽略对当前未被 git 跟踪的文件的更改。

    运行 git rm --cached config/initializers/smtp.rb 以阻止 git 跟踪文件的未来更改。

    使用虚拟值创建config/initializers/smtp.template.rb,然后提交+推送您的更改。

    指导任何新的利益相关者运行cp config/initializers/smtp.template.rb config/initializers/smtp.rb 并在设置他们的开发环境时更新文件。

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多