XCode中的源代码控制是一场噩梦 - 任何人都可以提供建议吗?

时间:2012-03-08 09:19:04

标签: ios git version-control xcode4

将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,还是有其他选择可用?

4 个答案:

答案 0 :(得分:12)

我只是将这些文件添加到我的.gitignore文件中。没有必要与其他开发者分享。

所以我有:

*.xcworkspace

在.gitignore

请注意,您链接的stackoverflow问题表示不排除project.pbxproj,但它并未表示不排除*.xcworkspace

但是,我目前没有使用工作区功能。如果您确实使用工作区功能,则可能需要包含这些文件,但忽略xcuserdata个文件。

答案 1 :(得分:2)

您链接的问题仅涉及xcodeproject/project.pbxproj文件。您应该能够安全地.gitignore其他文件。

答案 2 :(得分:0)

如果你因为UserInterfaceState.xcuserstate被修改而无法推送你的提交,这里有一个快速修复:

  1. 打开管理器,转到存储库,复制提交的代码(类似f01a2147218d by username
  2. 打开终端,转到项目的文件夹,执行git reset --hard f01a2147218d
  3. 推送提交!

答案 3 :(得分:0)

这是在Xcode 5.1上对我有用的东西:

  1. 提交并推送您所关注的分支机构的更改。
  2. 转到Xcode>源控制>放弃所有更改(应该只丢弃工作区问题)
  3. 检查您想要的分支和合并或您尝试做的任何事情。
  4. 注意:如果您在签出新分支之前等待太久或在Xcode中执行任何操作,则可能需要再次放弃更改