我有一个有两个分支的项目:staging和beta. 我在 上进行开发staging,并使用master分支来修复错误。因此,如果我正在暂存并看到错误,我将更改为master分支:
staging
beta
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
git status
No changes to commit
当您修改了一个文件并且您要切换到的分支也对该文件进行了更改(从最新的合并点开始)时,您的错误就会出现。
正如我所看到的,您的选择是 - 提交,然后通过额外的更改修改此提交(您可以在 git 中修改提交,只要它们没有被push编辑);或 - 使用存储:
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将创建包含您的更改的存储,但它不与任何提交甚至分支相关联。git stash pop会将最新的存储条目应用到您当前的分支,恢复已保存的更改并将其从存储中删除。
git stash save
git stash pop