【问题标题】:can't checkout a git branch - need to commit changes, but no changes are present无法签出 git 分支 - 需要提交更改,但不存在任何更改
【发布时间】:2018-05-14 13:47:45
【问题描述】:

我在尝试结帐分支时遇到问题,但我不能,因为:

您对以下文件的本地更改将被覆盖 退房: lib/file.php 请在切换分支之前提交您的更改或存储它们。中止

好的,所以我运行 git status,我得到:

在当前分支上没有提交,工作目录干净

我需要编辑 .git/info/exclude 以排除 lib/file.php,因为该文件在我的特定机器上引起了问题。但是当我导航到排除时,我不再看到列出的文件。我检查了当前处于活动状态的所有三个分支,但我的排除文件中没有列出 lib/file.php。

这是怎么回事?

不是重复的 - 答案/链接表明作者从未真正提交过文件。我理解这个概念。这是一个不同的问题。

【问题讨论】:

  • 你是在同一个目录下运行这些命令吗?
  • lib/file.php 曾经是您回购的一部分吗?如果是这样,那么您可能需要阅读以下内容:stackoverflow.com/questions/1274057/…
  • 是的,都在项目根目录中
  • @JDB 是的
  • Ok... 然后 git 处于奇怪的状态,因为您的忽略文件阻止 git status “看到”更改,但 checkout 仍然“看到” repo 中的文件将覆盖本地文件。看看那个链接。应该为你解决问题。

标签: git github


【解决方案1】:

目前您在一个分支上,文件 lib/file.php 不在 git 中,而是在您的文件夹中。您要切换到的分支在 git 中具有相同的文件。如果 git 切换到该分支,您现在拥有的当前文件将永远丢失。

git 错误信息有点混乱。它应该告诉您在切换到该分支之前删除 lib/file.php,或者 1. 添加文件,2. 提交它 3. 切换到其他分支。

【讨论】:

  • 好的,我想我现在明白了。
  • 但是我尝试添加并没有添加,因为它已经被 git 监视了?
  • 这里不能选择删除,因为我不希望将删除推送到远程。
  • 文件可以在一个分支中查看,但不能在另一个分支中查看。似乎它没有在您当前的分支中观看,而是在您要切换到的分支中观看。添加应该可以,但是如果文件被忽略,您可能必须强制添加。删除只是意味着在文件系统中删除,而不是使用 git rm。
【解决方案2】:

在当前分支上没有提交,工作目录干净

这是因为无法提交对此 .git/info/exclude 所做的更改,因为它是您的特定设置。所以它没有任何承诺。但是如果你修改 .gitignore 那么它适用于任何使用这个 repo 的人。

请阅读更多关于 .git/info/exclude

【讨论】:

  • 我需要这样做,而不是 .gitignore,因为有问题的文件只破坏了我的构建,没有其他人破坏。所以如果我使用 .gitignore 它会在每个人的版本中被忽略,所以如果其他人对其进行了提交,就会引起冲突。我是唯一需要忽略它的人。这是一个混乱的情况,并不理想,我知道,但事实就是这样。感谢您的回答
  • 但现在更令人困惑的是 .git/info/exclude 没有列出该文件。那么它为什么会这样呢?
猜你喜欢
  • 1970-01-01
  • 2020-12-27
  • 2010-11-21
  • 2011-11-25
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
相关资源
最近更新 更多