When you * are on a branch "foo" that is not "bar", * have "origin/bar", * and already have a local branch "bar", "git checkout -t origin/bar" seems to misbehave. $ git clone -s git.junio victim-002 $ cd victim-002 $ git branch * master $ git checkout -t origin/next Branch next set up to track remote branch refs/remotes/origin/next. Switched to a new branch "next" $ git checkout -t origin/master fatal: A branch named 'master' already exists. $ git branch master * next $ git diff --cached --shortstat 60 files changed, 2378 insertions(+), 3412 deletions(-) $ git diff --cached master $ exit The first "checkout -t" is fine. The failed one seems to have already updated the index and the work tree when it notices that it cannot create a new branch. I suspect "-t" does not have to be in effect to trigger this; in other words, "git checkout -b master origin/master" would have the same issue. I'm reporting this before digging it further myself, because I may not be able to diagnose this before I leave for a vacation. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html