Error when changing to master branch: my local changes would be overwritten by checkout

Manolo picture Manolo · Mar 15, 2014 · Viewed 205.3k times · Source

This question is similar to this one, but more specific.

I have a project with two branches (staging and beta).

I develop on staging, and use the master branch to fix bugs. So if I'm working on staging and I see an error, I change to master branch:

git checkout master

and do the stuff:

git add fileToAdd
git commit -m "bug fixed"

and then I merge with both branches:

git checkout staging
git merge master
git checkout beta
git merge beta

And doesn't matter if there are other files on the working tree.

But now, when I try to change to the master branch, I'm getting an error:

error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting

I thought that I should remove the file from the staging area:

git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php

but I'm getting the same error. If I do git status I get No changes to commit

Answer

KikiYu picture KikiYu · Sep 14, 2015

I encountered the same problem and solved it by

git checkout -f branch

and its specification is rather clear.

-f, --force

When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes.

When checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored.