We've hit this problem with a git-svn-based repository where some stuff got reorganized, but it happens in plain git too; if you have a branch with a file called, say, "foo" and another branch with a file called "foo/bar", you can't switch between branches even if there are no uncommitted edits in either branch.
To reproduce (I'm using version 1.5.0.1.74.g2470):
% git init-db Initialized empty Git repository in .git/ % echo "this is a test file" > testing % git add testing % git commit -a -m "initial commit on master" Created initial commit 1a9cb1bf3a5475f0bb05d1e7c59839ba0a388be7 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 testing % git checkout -b with-dir Switched to a new branch "with-dir" % mv testing testing- % mkdir testing % mv testing- testing/datafile % git add testing/datafile % git commit -a -m "commit with subdir" Created commit cdcb2af2a8dae8a2c5c3c143cb00b4863291cc17 2 files changed, 1 insertions(+), 1 deletions(-) delete mode 100644 testing create mode 100644 testing/datafile % git checkout master fatal: Untracked working tree file 'testing' would be overwritten by merge.
You can work around it by renaming the directory, but git should really blow away the directory if it doesn't contain any untracked / modified files.
-Steve