Git要求我提交或存储结算主变更,即使所有更改都已提交?

我在当地有两个分支, masterBerislav 。 后者目前活跃,我已经承诺所有的变化。 当我尝试结帐以master ,我收到以下消息:

错误:对以下文件的本地更改将被checkout覆盖:[在活动分支中更改的文件列表]请在您切换分支之前提交更改或存储它们。 中止

然而,我试过的其他东西 – commitstatusmerge – 告诉我没有什么要提交的(工作目录干净)。 我需要做什么才能到达我的master分支?

编辑:当我尝试git stash ,我得到:

错误:将未修改的[文件path]提供给diffcore

对于上面错误中列出的所有文件。

我今天遇到类似的问题。 git status并没有列出签出正在抱怨的文件。 我做了一个:

 git checkout -- path/to/file 

然后解除文件的任何更改。

一个更简单的方法来撤消当前工作目录下所有未分离的更改[1]

 git checkout -- . 

[1] – 被警告 – 你将失去你正在工作的任何未分类的变化(如果有的话)。 如果你不知道你在做什么,那么保留你正在工作的文件的备份:)

像这样简单:

 git stash git stash pop 

运行git stash时看到的“错误”并不是什么值得关注的东西。 这只是认识到该文件没有任何未提交的变化。

我有一个新鲜的克隆类似的问题。 我只是用–force(-f)标志强制结帐

 git checkout --force some_branch 

可能不是解决你正在修改的回购问题的最佳方式,但在我的情况下,我确定我没有做任何改变,只是想改变分支。

将有问题的文件移动到其他位置。 然后从树中删除有问题的文件。 再拉一次。 然后将来自违规文件的更改分散到您刚刚拖动的文件中。 黑客,但它的作品。

看起来你的工作副本中有未跟踪的文件,这些文件在另一个分支上被跟踪。 Git拒绝签出其他分支,因为当前未跟踪的本地文件将被另一分支上的文件覆盖。

你现在可以

  • 将这些文件添加到您当前的分支,如果这些文件与此分支相关
  • 删除这些文件,如果他们不需要

非常类似于@JohnHammink答案,但在这里。

  1. 删除文件到另一个目录。
  2. 提交您的更改(可能会显示您只删除了两个文件)。
  3. 再次将文件添加到目录。
  4. 提交(你应该只能看到一个正在提交的文件)。

在我的情况下,这是因为一个文件,只改变了案件改名。 例如fooViewModel到FooViewModel。 Git一直在想,同一个文件实际上是两个单独的文件。

我认为这与Unix区分大小写,而窗口不是真的有关。

希望这可以帮助

我有同样的问题,这解决了我的问题(在Linux上):

 git config --global core.autocrlf input