【问题标题】:Can't ignore UserInterfaceState.xcuserstate不能忽略 UserInterfaceState.xcuserstate
【发布时间】:2011-09-27 16:48:39
【问题描述】:

我正在使用 Git 进行 Xcode 4 项目版本控制。我已经明确将ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate 添加到.gitignore,但Git 它不会忽略它。任何想法为什么会这样?

【问题讨论】:

    标签: xcode git xcode4 gitignore


    【解决方案1】:

    Git 可能已经在跟踪文件了。

    来自gitignore docs

    要停止跟踪当前正在跟踪的文件,请使用 git rm --cached

    使用这个,将 [project][username] 替换为您的信息:

    git rm --cached [project].xcodeproj/project.xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
    git commit -m "Removed file that shouldn't be tracked"
    

    或者,您可以将-a 选项用于git commit,这将添加所有已修改或删除的文件。

    从 git 中删除文件后,它将尊重您的 .gitignore

    【讨论】:

    • 我遇到了这个问题,但是当我尝试删除 xcuserstate 文件时,它说“不匹配任何文件”。怎么回事?
    • 我和@RobCaraway有同样的问题
    • 这对我有帮助:1)退出xcode; 2) 转到项目目录并从终端应用程序执行“ls -la”以确保您看到 .git 和 .gitignore 文件; 3) 将上例中的“ProjectFolder”改为your项目的名称; 4)执行matt显示的两个git命令; 5) 重新启动 XCode 并提交并验证 xcuserstate 文件不再列出。
    • 知道如何在 svn 中做同样的事情吗?我遇到了同样的问题,其中 svn 没有忽略文件
    • 谢谢@Brainware!由于您的建议,它终于奏效了。我觉得提前关闭 Xcode 很重要。
    【解决方案2】:

    如果被忽略的文件一直出现在未跟踪列表中,您可以使用git clean -f -d 把事情弄清楚。

    1.

    git rm --cached {YourProjectFolderName}.xcodeproj/project.xcworkspace/xcuserdata/{yourUserName}.xcuserdatad/UserInterfaceState.xcuserstate
    

    2.

    git commit -m "Removed file that shouldn't be tracked"
    

    3。 警告首先尝试git clean -f -d --dry-run,否则您可能会丢失未提交的更改。

    然后: git clean -f -d

    【讨论】:

    • github 现在为您提供了一个默认的 .gitignore 文件,其中包括此文件,但您仍然需要完成您的步骤。有点烦人
    • 谢谢各位, git clean -f -d just deleted 。 xcodeproj 和我项目中的其他文件...
    • 强烈建议在运行 git clean 之前使用 --dry-run 标志,即git clean -f -d --dry-run 看看会发生什么
    • git clean -f -d 是做什么的?
    • 如果您有未提交的文件更改,请不要使用git clean -f -d!我使用了它,它删除了我新创建的文件,其中包含已经创建的内容! :) 所以先提交然后清理
    【解决方案3】:

    所有答案都很棒,但是如果您在不同的 Mac(家庭和办公室)中工作,那么对于每个用户来说,这是一个可以删除的答案

    git rm --cache */UserInterfaceState.xcuserstate
    git commit -m "Never see you again, UserInterfaceState"
    

    【讨论】:

      【解决方案4】:

      让朋友给我看这个很棒的网站https://www.gitignore.io/。输入您选择的 IDE 或其他选项,它将自动生成一个包含有用忽略的 gitignore 文件,其中之一是 xcuserstate。您可以在下载前预览gitignore 文件。

      【讨论】:

        【解决方案5】:

        如果在执行此处提到的所有操作后文件仍然显示,请确保未选中 Xcode 设置中的此复选框:

        【讨论】:

          【解决方案6】:

          只是 “混帐清洁-f -d” 为我工作!

          【讨论】:

            【解决方案7】:

            这里有一些演示和捷径,如果你使用 GitHub,基本思路是一样的。

            1.像这样打开终端

            2。将以下命令粘贴到终端后跟一个空格,然后像这样粘贴 .xcuserstate 文件的路径

            git rm --cached

            3.确保你有正确的 git ignore 然后提交代码:)

            【讨论】:

              【解决方案8】:

              对我来说没有任何效果,但是这个

              将此行添加到您的 gitignore

              *.xcuserdata
              

              【讨论】:

                【解决方案9】:

                这里有一个很好的解释,说明如何从你的 git 历史中递归地删除有问题的文件:http://help.github.com/remove-sensitive-data/

                非常有用,因为否则工具在尝试显示那些原本不应该检查的巨大文件的差异时往往会“挂起”...

                以下是您可以做的(简而言之)来摆脱最大的东西:

                cd YourProject
                git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r YourProject.xcodeproj/project.xcworkspace' HEAD
                # see what you want to do with your remote here...
                # you can: git push origin master --force
                # or you can delete it and push a fresh new one from your cleaned-up local...
                rm -rf .git/refs/original
                git gc --prune=now
                git gc --aggressive --prune=now
                

                对我来说工作得很好:)

                【讨论】:

                  【解决方案10】:

                  这对我有用

                  1. 从终端打开包含项目文件project.xcworkspace的文件夹。

                  2. 写这个命令:git rm --cached *xcuserstate

                  这将删除文件。

                  【讨论】:

                    【解决方案11】:

                    对于 xcode 8.3.3,我刚刚检查并尝试了上面的代码并观察到,现在在这种情况下,我们必须将命令更改为这样

                    首先你可以使用 .gitignore 创建一个文件

                     touch .gitignore
                    

                    之后,您可以使用此命令删除所有 userInterface 文件,并且使用此命令将尊重您的 .gitignore 文件。

                     git rm --cached [project].xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
                     git commit -m "Removed file that shouldn't be tracked"
                    

                    【讨论】:

                      【解决方案12】:

                      如果您使用的是源代码树应用程序,这里还有一个更简单的解决方案。 这是说明

                      1.右键单击要添加到 git 忽略列表的文件,然后选择停止跟踪。

                      1. 再次右键单击同一个文件,您会注意到现在启用了忽略选项,然后单击忽略按钮。

                      1. 现在您可以重置或提交对同一文件的更改,这取决于您的更改是否重要。将不会跟踪所选文件的未来更改。

                      【讨论】:

                        【解决方案13】:

                        我觉得这样写会更好。

                        git rm --cache *//UserInterfaceState.xcuserstate**

                        【讨论】:

                          猜你喜欢
                          • 2014-05-03
                          • 1970-01-01
                          • 2015-04-02
                          • 1970-01-01
                          • 2014-10-18
                          • 2021-03-26
                          • 1970-01-01
                          • 1970-01-01
                          • 2021-03-26
                          相关资源
                          最近更新 更多