将Git与Xcode(4.3)结合使用是一场真正的噩梦。
这是一个场景......
我想添加一个新功能,所以我创建了一个新主题分支。
我添加了我的新功能,我已准备好提交,改组和合并......
我承诺改变 - 很好。
我跳回到master以进行更改(以防其他人更新了代码)。 我突然得到了:
error: Your local changes to the following files would be overwritten by checkout:
myProject/project.xcworkspace/xcuserdata/Bodacious.xcuserdatad/UserInterfaceState.xcuserstate
是吗?我刚才承诺了。
Xcode喜欢每隔一秒更改一次project.xcworkspace
文件,这使得几乎不可能进行干净的原子提交。
更重要的是,如果我确实提交project.xcworkspace
中的更改并快速跳回另一个分支(例如为了合并为Master),那么Xcode会抱怨文件已经改变并且可能也会崩溃。 / p>
从我收集的内容I can't add these files to my .gitignore
开始。
我是否必须接受使用Xcode无法实现简洁有序的git策略,在进行任何Git管理之前关闭Xcode,还是有其他选择可用?
答案 0 :(得分:12)
我只是将这些文件添加到我的.gitignore
文件中。没有必要与其他开发者分享。
所以我有:
*.xcworkspace
在.gitignore
请注意,您链接的stackoverflow问题表示不排除project.pbxproj
,但它并未表示不排除*.xcworkspace
。
但是,我目前没有使用工作区功能。如果您确实使用工作区功能,则可能需要包含这些文件,但忽略xcuserdata
个文件。
答案 1 :(得分:2)
您链接的问题仅涉及xcodeproject/project.pbxproj
文件。您应该能够安全地.gitignore
其他文件。
答案 2 :(得分:0)
如果你因为UserInterfaceState.xcuserstate
被修改而无法推送你的提交,这里有一个快速修复:
f01a2147218d by username
)git reset --hard f01a2147218d
答案 3 :(得分:0)
这是在Xcode 5.1上对我有用的东西:
注意:如果您在签出新分支之前等待太久或在Xcode中执行任何操作,则可能需要再次放弃更改