Database.yml and .gitignore


#1

Hi,

For some reason git is not ignoring my database.yml file even though I
have config/database.yml in my .gitignore file. Any suggestions as to
what the problem might be and/or how I can fix it? It’s causing major
annoyances. Is there a way to remove the database.yml from the repo
entirely?

Thanks!


#2

On Dec 11, 11:29 am, jgoggles removed_email_address@domain.invalid wrote:

Hi,

For some reason git is not ignoring my database.yml file even though I
have config/database.yml in my .gitignore file. Any suggestions as to
what the problem might be and/or how I can fix it? It’s causing major
annoyances. Is there a way to remove the database.yml from the repo
entirely?

Thanks!

If it got added to your git repo before you specified it in the ignore
file, I think you have to remove it:

git rm config/database.yml
git commit -a -m “Removed database.yml”

(maybe save a backup of your database.yml first :slight_smile:

Jeff


#3

Oh! In fact I don’t actually do any of that manually, but instead I use
a simple Ruby script that I wrote (before discovering there are probably
better ways to this, and now Rails Edge has a really cool new template
system for doing this sort of thing).

If interested you can find the script here…
http://github.com/robertwalker/git-a-rails-project/tree

See the README for usage and options.


#4

Jeff C. wrote:

If it got added to your git repo before you specified it in the ignore
file, I think you have to remove it:

git rm config/database.yml
git commit -a -m “Removed database.yml”

(maybe save a backup of your database.yml first :slight_smile:

Jeff

Safer I think to:

git status

git rm config/database.yml --cache

–cache should leave the actual file alone and just remove it from
tracking> Backups are always a good thing though.


#5

Very helpful. Thanks guys!

On Dec 11, 2:12 pm, James B. removed_email_address@domain.invalid


#6

git status

git rm config/database.yml --cache

Notice: it’s --cached, not --cache.


#7

If it got added to your git repo before you specified it in the ignore
file, I think you have to remove it:

git rm config/database.yml
git commit -a -m “Removed database.yml”

(maybe save a backup of your database.yml first :slight_smile:

Jeff
What I do is rename database.yml to example_database.yml before the
initial commit to git (and have config/database.yml in .gitignore. Then
after the initial commit I copy example_database.yml back to
database.yml, which will not be ignored.

Git will only ignore untracked files that are in .gitignore. If you are
tracking changes to a file the .gitignore has no effect.

The reason I keep example_database.yml in Git is so that when the
repository is cloned all I have to do is copy example_database.yml to
database.yml and I’m ready to go in the clone.

Note: this way each developer can keep their database password in their
own untracked copy of database.yml if a password is required. But, they
won’t have to recreate database.yml from scratch.