我使用Git进行Xcode 4项目版本控制。我明确地添加了ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState。xcuserstate到.gitignore,但是Git不会忽略它。有人知道为什么吗?
当前回答
有个朋友给我看了这个很棒的网站https://www.gitignore.io/。输入您选择的IDE或其他选项,它将自动生成一个由有用的忽略组成的gitignore文件,其中之一是xcuserstate。您可以在下载之前预览gitignore文件。
其他回答
对于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"
对我来说什么都没用,除了这个
把这条线加到你的gitignore里
*.xcuserdata
Git可能已经在跟踪该文件。
gitignore文件中写道:
要停止跟踪当前正在跟踪的文件,请使用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,这将添加所有被修改或删除的文件。
一旦你从git中删除了这个文件,它就会尊重你的.gitignore。
所有答案都很棒,但如果你在不同的Mac(家庭和办公室)上工作,这里有一个会为每个用户删除的答案
git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"
这里有一个关于如何递归地从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可以自动在空格和制表符之间切换吗?
- Git暂存文件列表
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- keychain上的分发证书中缺少私钥
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- Xcode的构建文件夹在哪里?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- Xcode 4在目标设备上说“finished running <my app>”——什么都没有发生
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?