【问题标题】:Git asks to commit or stash, but there's nothing to commitGit 要求提交或存储,但没有提交
【发布时间】:2012-06-10 20:28:57
【问题描述】:

尝试从远程分支提取时出现错误: Your local changes to the following files would be overwritten by merge: app/..../_shared.scss Git 要求提交文件或存储。

问题是 - 我已经完成了 git add .git commit -am "trying to remove the error"。问题依然存在。

git status 说:“没有什么可提交的(工作目录干净)”

有谁知道如何摆脱它?

回答:将有问题的文件移动到其他位置。然后从树中删除有问题的文件。再拉一次。然后将您的违规文件中的更改与您刚刚提取的文件进行比较。 hack,但它有效。

注意:我在这里找到了答案 (Git asks me to commit or stash even those changes are commited),但由于没有人按照最初的想法投票,我应该重新发布。这是一种 hack,但它是解决问题的最快途径。

【问题讨论】:

  • 如果您自己找到了解决方案,您应该将其发布为答案并接受它——这对遇到相同问题的其他人很有帮助!
  • 会牢记这一点。我自己没有找到解决方案,我只是在另一个问题上找到了解决方案。但是,似乎另一个问题的所有者不想接受这个(完全有效的)解决方案作为正确的解决方案。因此,这似乎是一个很好的分享方式。下次会按照你的建议去做。谢谢!
  • 就我而言,我只是重命名了文件,然后再次拉出它就可以了。 Git 甚至不关心当前丢失的文件。
  • 我没有找到解决这个问题的办法。此时回购已不可挽回地被破坏,唯一的选择是核对它并从新的克隆开始。

标签: git


【解决方案1】:

如果git status 报告工作目录干净,我敢打赌你的工作目录中有一个被忽略的文件,其他人添加到远程仓库中。您可以通过git diff --stat your-branch remote-name/remote-branchgit ls-files -i --exclude-standard 确认。

解决方案是从忽略文件中删除该文件(因此git status 将其显示为未跟踪的文件),使用--include-untracked 选项将其存储,从远程提取更改,然后将存储应用到合并你的改变回来了。

【讨论】:

  • 无法真正确认或否认,因为我已经使用了解决方法,但我下次一定会尝试。从我们所做的工作来看,你绝对是正确的。感谢您的反馈!
  • 你拯救了我的一天!
【解决方案2】:

或者你可以“强制拉动”,我倾向于这样称呼它。

一个公平的警告:这个 sn-p 将破坏所有本地更改。
(包括已提交但未推送的更改)

git fetch origin master
git reset --hard FETCH_HEAD
git clean -df

【讨论】:

    【解决方案3】:

    正如@ellotheth 所说,我尝试检查被忽略的文件,但这不是问题所在。 对我来说唯一的解决方案是移动受影响的文件。

    但是在提交期间有很多“无法取消链接文件,权限被拒绝”,我知道远程移动/添加了一些文件。 可能和windows安装有关...Git Checkout warning: unable to unlink files, permission denied

    【讨论】:

      【解决方案4】:

      上述解决方案对我不起作用。我在有问题的文件中插入了一个空行并使用了命令git update-index --no-assume-unchanged /path/to/file。然后commit并正常推送。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-01
        • 2011-09-07
        • 2012-06-01
        • 2014-08-17
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        相关资源
        最近更新 更多