不能忽略UserInterfaceState.xcuserstate

我使用Git进行Xcode 4项目版本控制。我已经显式地将ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate添加到.gitignore中,但Git不会忽略它。有人知道为什么吗?

133718 次浏览

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

gitignore文档:

要停止跟踪当前正在跟踪的文件,使用Git rm——缓存

使用这个,用你的信息替换[project][username]:

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

另外,你也可以在git commit中使用-a选项,这将添加所有已修改或删除的文件。

一旦你从git中删除了这个文件,它就会尊重你的.gitignore

下面是一个关于如何递归地从你的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

对我来说非常有用:)

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

1.

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

2.

git commit -m "Removed file that shouldn't be tracked"
< p > 3。 警告:首先尝试git clean -f -d --dry-run,否则可能会丢失未提交的更改 < p >: git clean -f -d < / p >
< p >只是 "git clean -f -d" 为我工作!< / p >

有一个朋友给我看了这个惊人的网站。输入您选择的IDE或其他选项,它将自动生成一个由有用的忽略组成的gitignore文件,其中之一是xcuserstate。你可以在下载之前预览gitignore文件。

如果在做了上面提到的所有事情之后文件仍然显示,请确保Xcode设置中的这个复选框是未选中的:

enter image description here

所有答案都很好,但如果你在不同的Mac(家用和办公)工作,这里是一个将为每个用户删除的答案

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

对于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"

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

1. 像这样打开终端

enter image description here

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

< p > git rm --cached enter image description here < / p >

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

enter image description here

对我来说什么都没用,除了这个

把这条线加到你的gitignore里

*.xcuserdata

这对我很有用

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

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

这将删除文件。

我觉得这样写比较好。

Git rm——缓存*/ / UserInterfaceState.xcuserstate * *

这里有一个更简单的解决方案,如果你正在使用源树应用程序。 下面是指令

< p > 1。右键单击要添加到git忽略列表中的文件并选择停止跟踪。 enter image description here < / p >
  1. 再次右键单击相同的文件,你会注意到忽略选项现在启用,然后单击忽略按钮。

enter image description here

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

你也可以忽略Xcode首选项本身的文件。

https://www.toptal.com/developers/gitignore生成gitignore文件

点击Xcode ->偏好→源控制->Git→在列表中添加所有忽略项…尽管UI并不真正有用&你必须单独添加所有项目,但在这里添加忽略文件肯定是有效的。

enter image description here

enter image description here

enter image description here