git pull失败,"Untracked工作树文件'blah'将被合并覆盖",但树是干净的

Pau*_*her 32 git

我已经检查了我要推送的本地存储库的一些更改,但是当我执行git pull时,我得到:

paul$ git pull 
Run Code Online (Sandbox Code Playgroud)

错误:未经跟踪的工作树文件'documentation/Android/SwiftKey/buttons.xcf'将被合并覆盖.中止

我的工作树不包含未跟踪的文件:

paul$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 26 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

我所做的提交不会触及它抱怨的文件.

我已经阅读了建议我做的答案git reset HEAD --hard,但我不确定这对我所做的提交有什么影响?

Nei*_*hew 26

这不是你所做的提交触摸文件,而是你提交的提交.检查您正在跟踪的远程分支,看看发生了什么.例如,git log master..origin/master将显示自上次提取以来在origin/master上发生的所有提交.根据你上面的输出,其中有26个.使用该--name-status选项将显示添加文件的提交.

您需要重命名有问题的文件,执行拉动,然后将其移回(从repo覆盖副本).然后会告诉你你的副本与其他人承诺掌握的副本有何不同.然后,您可以提交差异,或将其丢弃.git diff filenamegit checkout filename

您将需要使用git pull --rebase来重新设置最近提交的提交origin.一旦git status说主人先行而不是偏离原点/主人,你就可以推动.

  • 谢谢Neil - 就在我收到你的答案之前,我设法解决了问题是"Swiftkey"目录已被其他用户重命名为"SwiftKey".因为OSX的文件系统不区分大小写,这就是造成我问题的原因:-( (6认同)
  • 为了记录,我通过删除我本地树的那部分(安全,因为没有我的更改触及它),然后执行git pull,然后检查 - 在我之前删除的树上克服了问题.Eugh. (3认同)