不知道小伙伴们有没有发现,每次打开工程项目的时候,git都会报出一个UserInterfaceState.xcuserstate变更状态,但是我们并没有做任何修改,这是为什么呢?
UserInterfaceState.xcuserstate:Xcode中保存的用户操作的GUI状态,如窗口位置,打开的标签页,在项目检查等展开的节点、 简单地调整大小的Xcode窗口将这个文件来改变和修改您的源代码控制系统进行标记。
其中HelloWorld.xcodeproj属于包文件,它内部的很多东西是不能提交的,包括:project.xcworkspace和xcuserdata,它们是与用户有关的。Git中有一个.gitignore配置文件,在这个文件中可以设置被忽略的文件。
解决办法:
百度了一下解决方案,在终端执行下列三列命令行即可,但是试了好几次也没有成功。
git rm --cached [YourProjectName].xcworkspace/xcuserdata/[YourUsername].xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removed file that shouldn't be tracked"
git push
最后,在小风过街的文章中找到了解决方案。
得先在工程目录(和.git仓库同路径的目录下)配置有 .gitignore 文件,它才能生效!我今晚就入了这个坑,因为没配置 .gitignore文件,这3句代码一直无效。
开始看到这句话真心懵逼,不知所云。
下面列一下操作步骤
配置的 .gitignore 文件内容可在这里找到Objective-C的,复制下来
:github/gitignore
终端输入
1. cd '你的本地仓库文件夹'
2. ls -la
'这里控制台应该会打印出仓库里的文件,看看打印的结果里面有没有.git,
如果有继续执行,如果没有的话,检查一下此时的文件夹是否是仓库的根目录。'
3. touch .gitignore
4. open .gitignore
'这里会弹出一个文本,将刚才复制的内容粘贴到里面,
然后cmd + s保存一下,最后关闭到这个文本窗口就可以了。'
5. git add .gitignore
'添加到缓存区'
6. git commit -m "添加了.gitignore文件"
'提交'
7. git push
'推送'
8. 最后再按顺序执行这三行代码
git rm --cached [YourProjectName].xcworkspace/xcuserdata/[YourUsername].xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removed file that shouldn't be tracked"
git push
其中YourProjectName为你的工程名称,myUserName为对应的用户名称。
到此结束。实验一下,看看是不是你想要的结果。
附上Objective-C.gitignore的代码
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xccheckout
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode
iOSInjectionProject/