更改为主分支时出错:我的本地更改将被checkout覆盖
这个问题与此类似,但更具体。
我有两个分支( staging
和beta
)的项目。
我在staging
开发,并使用master
分支来修复错误。 所以,如果我正在分期工作,我看到一个错误,我改成master
分支:
git checkout master
并做的东西:
git add fileToAdd git commit -m "bug fixed"
然后我与两个分支合并:
git checkout staging git merge master git checkout beta git merge beta
如果工作树上有其他文件,则无关紧要。
但是现在, 当我尝试更改master
分支时,出现错误 :
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
我以为我应该从临时区域删除文件:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
但我得到同样的错误。 如果我做git status
我得到No changes to commit
当您修改了一个文件,并且您正在切换到的分支也对该文件进行了更改(从最新的合并点开始),则会显示您的错误。
你的select,正如我所见,是 – 提交,然后修改这个提交额外的变化(你可以修改提交git,只要他们不push
)。 或者 – 使用隐藏:
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
将创build包含您的更改的存储,但它不与任何提交或甚至分支关联。 git stash pop
将最新的藏匿条目应用到您当前的分支,恢复保存的变化,并从藏匿中删除。
我遇到了同样的问题,并通过解决
git checkout -f branch
其规格比较清晰
-f,–force
切换分支时,即使索引或工作树与HEAD不同,也要继续。 这是用来丢弃本地更改。
从索引检出path时,不要在未合并的条目上失败; 相反,未被合并的条目被忽略。
如果您不想提交本地更改,则可以强制检出分支。
git checkout -f branch_name