Xcode 4 Git-“此文件在请求的修订版本中不存在”

时间:2011-08-18 00:28:58

标签: git xcode4

我有一个本地git存储库,我在Xcode 4中设置了一个项目。存储库在Organizer中显示正常,我可以在File Navigator中看到提交历史和源代码控制图标。提交工作也很好。但是,当我使用版本编辑器时,每当我尝试查看任何以前的版本时,我都会收到错误“此文件在请求的修订版本中不存在”。我找不到有关此错误的任何信息,也不知道如何修复。 git log显示了最近的四次提交(我知道还有更多提交,但我不知道这是否是对命令的限制或者某些事情是否正在消失)。有什么想法吗?

15 个答案:

答案 0 :(得分:15)

我刚遇到同样的问题。我认为(无论如何),这与我将项目目录移到xcode之外的事实有关。我相信xcode已经在〜/ Library中缓存了一些索引文件。他们似乎已经被这一举动纠缠在了一起。

修复(对我而言)是打开xcode,打开组织者 - >项目窗格并找到有问题的项目。删除派生数据(右上方窗格中有一个按钮)。

在此之后,一切似乎都很好。

答案 1 :(得分:9)

这对我有帮助:

  1. 转到XCode - >组织者 - >存储库
  2. 删除所有存储库,名称以红色显示(即找不到文件)
  3. 点按左下角的“+”按钮 - > “添加存储库......”
  4. 输入所需信息:路径= file://....<full path, which contains the .git directory>。确保将Type设置为“Git”,Xcode将其更改为“Subversion”,忽略消息“Authentication required”
  5. 完成

答案 2 :(得分:3)

我在类名中更改了case时遇到了这个问题。 Git有一个小写字母,我想要大写。我尝试了许多以上完全重建存储库的东西。我终于简单地从项目中删除了类,稍微更改了名称然后重新添加它。

答案 3 :(得分:1)

我猜这是可能由多个问题引起的这些问题之一。这是我的,我是如何解决它的。

我的项目正在进行一些文件系统名称更改。即,从所有下盖移动到Pascal外壳。这在我的编码周期中的某个时刻得到了退出。当我签入时,文件系统是:

mydirectoryname

mydirectoryname下的所有文件不再由Xcode下的git管理。在版本编辑器下查看时,我最终得到“此文件在请求的版本中不存在”错误消息。

但是,如果我选择了其中一个文件并单击了文件检查器(在“工具”窗格中可用),我发现完整的文件路径列为:

MyRootPath/MyDirectoryName/TheCodeFile.h

我关闭了Xcode,在编辑器中打开了.pbxproj文件,修复了路径,然后重新打开了项目。 Git集成再次发挥作用。

答案 4 :(得分:1)

事实证明,在我的情况下,这个问题与我在我的存储库中重命名了很多文件这一事实有关。来自&#34; CamelCase&#34;到&#34;小写&#34;,包括我的项目文件和文件夹。这肯定是以某种方式在某处不正确地跟踪的。

默认情况下,OS X使用不区分大小写的文件系统,而git在内部区分大小写,我相信这个问题与此有关。

这些是我用来解决这个问题的步骤。如果您认为您的问题可能是由于更改了文件名的情况,这也可能对您有帮助。

  1. 转到存储库的根目录,使用&#34; ls -la&#34;删除.git文件夹以外的所有内容。 (也可以查看所有隐藏文件)和&#34; rm&#34; /&#34; rm -rf&#34;命令。
  2. 做一个&#34; git reset --hard&#34;获取所有文件。您现在可能会看到文件名的大小写已更改。就我而言,在我的工作副本的根目录中,&#34; myapp.xcodeproj&#34;和#34; myapp&#34; (包含所有代码文件的文件夹)已更改为&#34; MyApp.xcodeproj&#34;和#34; MyApp&#34; (夹)。我以为我把它改成了小写,但显然,git没有对它进行适当的跟踪。
  3. 现在,将您的文件重命名为不相关的内容。例如,我重命名了#34; MyApp.xcodeproj&#34; to&#34; foo.xcodeproj&#34;和#34; MyApp&#34;到&#34; foo&#34;。
  4. 然后执行&#34; git add --all&#34;
  5. 现在,将您的文件重命名为您想要的文件。我重命名为#34; foo.xcodeproj&#34; to&#34; myapp.xcodeproj&#34;和&#34; foo&#34; to&#34; myapp&#34;,这就是我想要的开始(以及我认为我已经做过的事情)。
  6. 做另一个&#34; git add --all&#34;。
  7. 提交。
  8. 现在你的生活应该会更好,Xcode也应该表现得很好,因为git现在看到与Xcode项目完全相同的文件(具有完全相同的情况)。

答案 5 :(得分:1)

我的问题和解决方案很简单:

  • 我创建了一个文件夹myProj
  • 我在此文件夹中创建了一个Xcode项目MyProj
  • 这给了我一个看起来像myProj / MyProj / MyProj /
  • 的结构
  • 我不喜欢这个额外的文件夹级别,所以我将内部MyProj移出myProj
  • Xcode存储库跟踪得到了充实

解决方案:

  • 打开管理器到存储库,并删除以红色突出显示的大写“MyProj”存储库。 Xcode在“myProj”处检测到新的存储库位置,并恢复正常跟踪。

答案 6 :(得分:0)

我在今天早些时候的一个相对较新的项目中使用Xcode 4.2遇到了同样的错误。

我最初通过将repo克隆到兄弟目录来解决这个问题。在终端:

> cd /path/to/XCodeProject
> mkdir ../Clone
> cd ../Clone
> git clone ../XCodeProject/.git .

但是,当我删除原始项目并将新目录重命名为同名时,问题再次出现。

最后,解决方法只是找到我的.xcodeproj和.git文件,并为父目录指定一个不同的名称。

答案 7 :(得分:0)

据我所知,这是由于Xcode 4.3目前无法正确处理的冲突。 同样严重的同步.DS_Store我也有类似的问题。我手动删除了它并陷入了类似的情况。

然后我必须使用命令行手动解决问题:

  • 打开终端
  • cd到本地git存储库
  • cd .git /
  • mv MERGE_HEAD MERGE_HEAD_OLD //或只删除它

如果您遇到拉动,提交和推送,通过Xcode,您应该能够再次调用它们。此外,由于双方应该正确同步,您的错误“此文件在请求的修订版本中不存在”也将消失。如果这对您有用,请评论。

答案 8 :(得分:0)

有同样的问题。
通过在管理器的“项目”页面中选择项目并通过按下这些字段的“删除...”按钮删除“派生数据”和“快照”数据来解决。
在此之后,可以在必要时成功创建和导出新快照。

答案 9 :(得分:0)

这是一个古老的线索,但由于从未找到正确的答案,我将投入2美分。

此错误的一个原因可能来自未跟踪的文件,特别是来自子模块或当前分支中不存在但前一个分支中的文件。

例如,当您切换到具有子模块的分支并更新此类子模块时,它会将这些文件同步到您的存储库。当你以后切换到没有这种子模块的分支时,它不会自动添加或删除它们,但是git会意识到分支中没有跟踪某些东西。每当您切换到任何版本编辑器模式时,XCode都会检测到这一点:log,blame或comparison。

如果是这种情况,git状态提示将产生未跟踪的文件:

  On branch master
  Your branch is up-to-date with 'origin/master'.

  Untracked files:
    (use "git add <file>..." to include in what will be committed)

    yourSubmodule/

  nothing added to commit but untracked files present (use "git add" to track)

要解决此问题,您只需使用 rm 删除未跟踪的文件,因为这些文件不属于此分支,可以从实际指向子模块的分支同步。请注意,这是子模块的情况,但如果您确实有新文件,则应将它们添加到存储库中,或者将它们添加到忽略列表中。解决问题后,git status应该是干净的:

  On branch master
  Your branch is up-to-date with 'origin/master'.

  nothing to commit, working directory clean

了解submodulesissues with their usage

干杯!

答案 10 :(得分:0)

创建并重命名新文件后,我收到了相同的消息。当我在Git提交窗口中选择文件时出现此消息。删除并重新添加文件解决了问题。

答案 11 :(得分:-1)

仍然没有答案;无论如何,我不得不对项目做一些重大改动,所以我开始了一个新项目。一切都很好。

答案 12 :(得分:-1)

我遇到了同样的问题。这是因为编辑器模式是“显示版本编辑器”。确保它显示在“显示标准编辑器”或“显示助理编辑器”中。它位于Xcode的右上方区域,旁边是“View”和“Organizer”。

答案 13 :(得分:-1)

我在项目中的某个特定文件中发生了这种情况。所有其他人都工作正常。从我添加它时,此文件从未正常工作,在执行任何操作时总是给出“文件在请求的版本中不存在”错误,包括最令人讨厌的保存它!我尝试将其从存储库中删除并重新添加它。相同。最终工作的是从命令行执行“git add”和“git commit”。转到存储库的根目录(包含.git文件夹的目录),运行“git add”(即使看起来它应该已经存在!)然后“git commit”。这为我修复了它,文件现在在Xcode中很开心。

答案 14 :(得分:-1)

我有这个问题 - 我通过以下方式解决了这个问题: 删除管理器中的存储库

项目目录中的终端提示

ls -A - sheck for .git repo files - 不应该是 - 但是如果有rm -R .git

然后设置新的git repo

git init git add。 git commit -m“initial rev”

然后当我重新打开xcode时 - 项目是在git源代码控制下