【发布时间】:2012-09-15 21:39:28
【问题描述】:
我刚刚尝试检查我的主分支并遇到了:
error: Untracked working tree file 'app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate' would be overwritten by merge.
所以,我尝试从 git 中删除这个文件(我已经在 .gitignore 中添加了一个表达式来捕获它),使用:
git rm --cached app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate
得到:
fatal: pathspec 'app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate' did not match any files
所以,有点不知所措。据我了解,工作文件不是这里的问题。但是,为了完整起见,确实存在工作文件。例如。
ls -l app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate
-rw-r--r-- 1 u u 56061 24 Sep 12:42 app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate
【问题讨论】:
-
是什么让您认为工作树文件不是问题?错误消息说:“未跟踪的工作树文件......将被合并覆盖”。你是未跟踪的工作树文件是的问题; git 不想把它吹走,因为它包含未跟踪的工作更改。
-
但是如果工作树文件没有被 git 跟踪,它会如何被覆盖呢?例如。 git rm --cached 说它不匹配任何文件。
-
它必须是一个文件存在于您尝试移动到的分支中的该位置,即使它在您要移动的提交中不存在。这就是错误消息告诉您的内容。
-
是的,谢谢。刚刚发布了一个答案,详细说明了我最终是如何解决的。