Xcode 4.6中不稳定的git状态 - 手动刷新“修改”和“无更改”之间的交替状态

时间:2013-02-22 09:39:13

标签: xcode macos git

在Xcode 4.6下,git状态以非常不稳定的方式运行。以下是新的提交后的示例(终端中的“git status”表示没有更改):

  1. 我修改了一个文件,因此边栏旁边会显示“M”。
  2. 我转到“文件 - >源代码管理 - >刷新状态”,然后“M”消失!
  3. 我转到“文件 - >源代码管理 - >刷新状态”,然后再次出现“M”!
  4. 根据需要重复步骤2或3。刷新“M”和“no-M”之间的替代品。什么可能导致这个?有什么想到的吗?

    我可以以某种方式调试这个以跟踪可能发生的事情吗?

    我尝试删除整个DerivedData,清除管理器中的存储库,然后重新启动Xcode,但没有任何帮助。

2 个答案:

答案 0 :(得分:0)

类似的情况发生在我继续提交然后“M”消失,几秒钟之后,它再次出现,如果我再次尝试提交,它允许我再次提交,但所有文件显示零更改。然后M消失并再次出现。

我发现修复此问题的唯一方法是在代码中插入注释然后提交。 M应该消失。

答案 1 :(得分:0)

事实证明,在我的情况下,这个问题与我将我的存储库中的大量文件从“CamelCase”重命名为“小写”,包括我的项目文件和文件夹这一事实有关。这肯定是以某种方式在某处不正确地跟踪的。

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

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

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