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

这个问题类似于 This one,但更具体。

我有一个项目有两个分支:stagingbeta。 我在staging上开发,并使用master分支来修复错误。因此,如果我正在进行分段,并且看到错误,我将更改为master branch:

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

361580 次浏览

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

在我看来,你的选择是

  • commit,然后用额外的更改修改这个提交(你可以在git中修改提交,只要它们不是pushed); 或者< / p >

  • < p >使用储备:

    git stash save your-file-name Git checkout master

    你跟主人有什么关系吗

    git检出阶段 Git stash pop

git stash save将创建包含您的更改的存储,但它不与任何提交甚至分支相关联。git stash pop将应用最新的stash条目到当前分支,恢复保存的更改并将其从stash中移除。

警告:运行此命令将丢弃本地更改。只有在希望丢弃本地更改时才运行此命令。

我遇到了同样的问题,用

git checkout -f branch

它的规范是相当明确的。

- f,力

切换分支时,即使索引或工作,也要继续 树不同于头。这用于扔掉局部更改

当从索引中检出路径时,在未合并时不会失败 条目;相反,未合并的条目将被忽略

如果不想提交本地更改,可以强制签出分支。

git checkout -f branch_name

我遇到了同样的问题,用

Git checkout -f分支

嗯,要小心-f开关。如果你使用-f开关,你将丢失任何未提交的更改。虽然可能在某些用例中使用-f是有帮助的,但在大多数情况下,你可能想要stash你的更改,然后switch分支。上面解释了stashing过程。

您可以在当前分支中提交,签出到另一个分支,最后选择该提交(代替合并)。

当您要切换到的分支具有当前分支没有的更改时,会发生此错误。

如果在尝试切换到新分支时看到此错误,则当前分支可能落后于一个或多个提交。如果是,运行:

git fetch

您还应该删除可能与目标分支冲突的依赖项。

例如,对于iOS开发者来说:

pod deintegrate

然后再试着去分行结账。

如果想要的分支不是新的,您可以选择提交并修复冲突,或者隐藏更改,然后修复冲突。

1. Git Stash(推荐)

git stash
git checkout <desiredBranch>
git stash apply

2. 摘樱桃(更多工作)

git add <your file>
git commit -m "Your message"
git log

复制提交的sha。然后丢弃不想要的更改:

git checkout .
git checkout -- .
git clean -f -fd -fx

确保你的分支是最新的:

git fetch

然后签出到所需的分支

git checkout <desiredBranch>

然后樱桃选择另一个提交:

git cherry-pick <theSha>

现在解决冲突。

  1. 否则,你的其他选择是放弃当前的分支更改:
git checkout -f branch

我得到了同样的错误。实际上,我试图用新的更新包覆盖颤振旧SDK包。所以这个错误发生了。

我用VS Code打开了flutter sdk目录,并清理了项目

在VSCode cmd中使用此代码

git clean -dxf

然后使用git pull

İf你正在使用taskrunner,你应该停止它,做git更改,然后再次运行tasrunnner。否则,taskrunner将监视并更改跟踪文件,您正在使用git注释更改这些文件。

对我来说,是不同的。

我已经创建了一个提交并推送它,后来我做了git update-index --assume-unchanged <file>并编辑了内容以在本地使用,但当我想签出到另一个分支时,git提示我这个错误。

我的解决方案是撤销本地更改并签出到所需的分支,并在那里进行本地更改。