我正在开发一个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: "[email protected]",
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和我的计算机上是相同的。我试图指明
配置/初始化/ smtp.rb
要么
/config/initializers/SMTP.日本
但无论如何,我的计算机上的smtp.rb
文件被Github上的文件覆盖。反过来也是如此。我错过了什么?
正如@oliver所提到的,该文件不应该存在于git上。您可以通过执行从git中删除该文件
git rm --cached config/initializers/smtp.rb
git commit -m "Removed config file from repo"
git push
请注意--cached
,这是非常重要的,否则你可能会丢失你本地目录中的文件。此选项将仅从repo中删除该文件。
如果要将目录添加到Remove directory from remote repository after adding them to .gitignore,请参阅:.gitignore
谢谢!
.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
并在设置开发环境时更新文件。