问题
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/lab_master
remotes/origin/master
$ git checkout lab_master
error: Your local changes to the following files would be overwritten by checkou t:
**project.properties**
Please, commit your changes or stash them before you can switch branches.
Aborting
why i just failed to checkout lab_master branch?
another question: why i cannot compare current file with the file in another branch?
$ git diff project.properties -b lab_master
fatal: bad flag '-b' used after filename
回答1:
Git protects you from switching to another branch, because that would override some changes you applied to the file project.properties
. You can either throw the changes away by using git checkout -f lab_master
or stash them first via git stash
(and git stash pop
after you checked out the other branch.) If you are sure, you want to keep the changes, you can also simply commit them.
回答2:
You need to either commit your changes or stash them, http://git-scm.com/book/en/Git-Tools-Stashing
回答3:
git diff already uses the -b flag to ignore whitespace. That conflicts with your desire to refer to another branch. For that you need to use 'git diff master..anotherbranch'
来源:https://stackoverflow.com/questions/12596767/why-i-cannot-checkout-another-git-branch