小编典典

错误:您对以下文件的本地更改将被结帐覆盖

all

我有一个有两个分支的项目:stagingbeta. 我在
上进行开发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


阅读 74

收藏
2022-07-08

共1个答案

小编典典

当您修改了一个文件并且您要切换到的分支也对该文件进行了更改(从最新的合并点开始)时,您的错误就会出现。

正如我所看到的,您的选择是 - 提交,然后通过额外的更改修改此提交(您可以在 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将创建包含您的更改的存储,但它不与任何提交甚至分支相关联。git stash pop会将最新的存储条目应用到您当前的分支,恢复已保存的更改并将其从存储中删除。

2022-07-08