【问题标题】:Xcode: "The working copy ____ has uncommitted changes" vs. git status: "nothing to commit, working directory clean"Xcode:“工作副本____有未提交的更改”与 git 状态:“没有提交,工作目录干净”
【发布时间】:2014-01-24 13:21:40
【问题描述】:

在 Xcode 5.0.2 中,我尝试从远程拉取并收到以下消息:

“工作副本 'project-name' 有未提交的更改。提交或放弃更改,然后重试。”

很公平。我打开提交对话框,然后收到消息,“此文件在请求的修订版中不存在。”单击“确定”将我带入提交对话框。 (右侧窗格中没有显示修订,可能与我收到最新消息的原因相同。)选择平面视图,我看到只有一个修改过的文件:project.pbxproj。我输入提交消息并单击“提交 1 文件”。然后当我去拉取时,我发现我的位置和以前完全一样——出现相同的消息,并且无论我提交多少次都无法拉取(或推送)。

很好奇,我运行git diff 来查看只是发生了什么变化。没有。 git status 为我提供了同样有用的输出:nothing to commit, working directory cleangit push 还是 git pull?是的,这些在命令行中工作得很好。

那是什么?为什么 Xcode 坚持我的工作目录中有更改?为什么它不告诉我它们是什么?已尝试重新启动 Xcode 和系统。虽然我很高兴我仍然有一些 方式来推动和拉动,但如果 Xcode git 集成表现良好,那就太好了。有什么想法吗?

我发现了这些类似的问题,但没有一个解决这个特定问题(或提供可接受的解决方案):

【问题讨论】:

  • git reset --hard 有帮助吗? (如果您的工作树中没有任何私有文件)
  • 没什么区别,@VonC。
  • 我在 Xcode 5 上也遇到了同样的问题。我希望有办法解决这个问题。我需要切换回本地分支继续开发。

标签: xcode git


【解决方案1】:

好的,所以我解决了我的问题。

打开 Xcode:

  1. 打开终端 - cd / 到您的项目目录。
  2. 输入:“git reset --hard
  3. 输入git status

重新启动 Xcode 并提交(只是评论或其他内容)

重复上述步骤。

这为我解决了我的问题。

【讨论】:

  • 谢谢,@Tander。然而,正如 cmets 关于这个问题所建议的那样,这并不能解决我的问题......
  • 就我而言,“git reset --hard”步骤足以解决问题。谢谢@Tander
  • 没问题@Kqtr - 令人惊讶的是,4 年后,这仍然是最新版本的 Xcode 中的问题。
  • 每次我在 Xcode 中单击某些内容时,它都会更改我的用户数据文件,因此在每次移动到 unstashing 操作后我都必须git reset --hard。事后看来,也许我只需要在 unstashing 之前进行重置,但对于其他人来说,在 Xcode 中更改视图或单击 UI 将刷新您的 IDE 并更新您的用户数据文件。
【解决方案2】:

您必须使用命令行 git 修复它。转到终端中的工作文件夹,输入:

git status

这将显示哪些文件有未提交的更改。例如,Crashlytics 会在您运行后立即更新,即使使用 Xcode/Source Control/Discard Changes 也无法摆脱它。

一旦您看到有未提交更改的文件(忽略添加的文件),请使用:

git checkout -- Folder/filename.ext

这与 Xcode 中的“丢弃”相同。

完成之后,回到 Xcode,你应该可以切换分支了。

【讨论】:

    【解决方案3】:

    应用代码解决方案:

    1. 在终端中确认 git 状态:

      混帐状态

    2. App Code中打开“yourProject.xcworkspace”

    3. VCS > Git > 分支...

    4. 远程分支 > yourBranch > 结帐为新的本地分支

    5. 通过终端确认修复:

      混帐状态

    【讨论】:

      【解决方案4】:

      xCode 真的非常糟糕。每次您只查看文件时,都会更改一个名为 UserInterfaceState.xcuserstate 的文件。在 xCode 本身的概述中看不到,通过命令行即可。

      快速修复:

      1. 打开终端
      2. CD 到您的项目目录,然后键入以下内容:
      3. git add .
      4. git commit -m "Commit"
      5. git push origin master

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 2016-09-13
        • 2022-12-04
        • 2014-10-17
        • 2015-11-26
        • 1970-01-01
        • 1970-01-01
        • 2015-06-17
        • 2012-09-16
        相关资源
        最近更新 更多