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
Your error appears when you have modified a file and the branch that you are switching to has changes for this file too (from latest merge point).
Your options, as I see it, are
push
ed);
or git stash save your-file-name
git checkout master
# do whatever you had to do with master
git checkout staging
git stash pop
git stash save
will create stash that contains your changes, but it isn't associated with any commit or even branch. git stash pop
will apply latest stash entry to your current branch, restoring saved changes and removing it from stash.