Hi, Sorry if this question has been asked before; I skimmed through the list archives and the FAQ but couldn't immediately find it - please point me in the right direction if it has indeed been discussed before. We were renaming some previously-included configuration files (foo.conf) in one of our repos, instead providing a "default" configuration (foo.conf.default) that can easily be copied over to foo.conf by individual developers. This all works fine, and the *.conf are now added to the .gitignore list. _However_, when switching back to our previous release branches (which includes the foo.conf file in the tree), we have noticed that git silently overwrites the locally-modified foo.conf file with the upstream foo.conf file from that branch. When switching back to master, the file contents is therefore perpetually lost, which is a bit unfortunate. I did a quick repro case here: https://github.com/perlun/git-test, and it seems easy to reproduce this behavior using the following steps (also documented in that git repo): $ git init $ touch foo.txt $ nano foo.txt $ git add foo.txt $ git commit -m 'Add foo.txt' [master (root-commit) 8ef05cb] Add foo.txt 1 file changed, 1 insertion(+) create mode 100644 foo.txt $ git checkout -b dev Switched to a new branch 'dev' $ git mv foo.txt foo.bar $ git commit -m "Rename foo.txt -> foo.bar" [dev 4c55c9b] Rename foo.txt -> foo.bar 1 file changed, 0 insertions(+), 0 deletions(-) rename foo.txt => foo.bar (100%) $ echo 'my local foo.txt' > foo.txt $ echo foo.txt > .gitignore $ git commit -m "Add .gitignore" [dev 4c16acb] Add .gitignore 1 file changed, 2 insertions(+) create mode 100644 .gitignore $ git checkout master # This will silently overwrite the local foo.txt So my question is: is this by design or should this be considered a bug in git? Of course, it depends largely on what .gitignore is being used for - if we are talking about files which can easily be regenerated (build artifacts, node_modules folders etc.) I can totally understand the current behavior, but when dealing with more sensitive & important content it's a bit inconvenient. What I would have expected would be for git to complain, with this message: error: The following untracked working tree files would be overwritten by checkout: foo.txt Please move or remove them before you switch branches. Aborting This is normally the message you get when a _non-ignored_ file is being overwritten. But apparently not so when an ignored file is being overwritten. If this can be tweaked in the local repo settings somehow, please let me know. -- Best regards, Per