我正在与基于Git的主存储库同步的基于Swift的XCode项目。我的一个团队成员向我拉出的母版添加了一些文件。
我在项目目录中找到了这些文件,但是在我的项目中却找不到。当我手动尝试将这些文件添加到项目中时,在这种情况下,我在我的项目上获取了Modify标记,那么我无法从master提取新更改。
这很烦人。我该如何处理。
此外,我们如何才能确保团队中的每个人都在不同的模块上分别工作,并确保每个人都能够提交/拉动彼此的更改。
带有M标签的项目文件夹禁止我们这样做。
编辑1
我也遵循了步骤
git rm -r --cached ProjectName.xcodeproj
git commit -m "Removed file that shouldn't be tracked"
即使这样做了
我对进行了更改File1.swift
,而我的团队成员对进行了更改File2.swift
他已经提交了它,我想撤消这些更改,但是由于更改File1.swift
我无法撤消它。为了使其起作用,我不得不放弃其中的更改File1.swift
,然后只有我才能撤消那些更改。如果是这样,那么它就违反了使用的目的git
Xcode项目文件
Xcode项目文件,或更准确地说,pbxproj
是xcodeproj
容器内部的文件,用于跟踪所有文件(以及其他内容)。与Eclipse不同,Xcode不会监视源/项目文件夹中的更改,因此不会更新文件列表,这可能导致合并后的不一致。
合并冲突
如果您的团队成员在存储库的本地副本中添加或删除文件并将其更改推送到服务器,则他基本上会覆盖pbxproj
,因此会更新Xcode项目的文件列表。如果撤消这些更改,则有两种可能的情况:
Git可以自动合并更改,这通常意味着它将保留pbxproj
文件副本而不包含更新的文件引用。
Git无法合并更改,因此表明您需要解决自己的合并冲突。根据差异和更改的数量,这些合并冲突可能会很烦人。有时,删除pbxproj
文件副本,从服务器使用副本并重新应用本地更改(例如添加文件引用)可能会更容易。
在这两种情况下,您可能都需要将pbxproj
文件与服务器上的文件进行比较,然后手动合并。是的,您的项目文件将标记为M
(完全修改)(完全可以修改)。只需提交更改,您就可以再次进行。
还有一件事:每当您想从git服务器中提取更改时,都可以存储更改(git stash
)或提交更改。
避免合并冲突
如果希望将来避免合并冲突,建议您看一下以下工具。
椰子足
通过创建私有Pod,Cocoapods可用于将您的项目模块化为较小的部分。这种技术的好处:您不必跟踪新添加或删除的文件。只需运行pod update
,您就可以重新运行。有几篇博客文章详细介绍了此技术,例如,在这里
凤凰
在我以前的公司中,我们有一个非常庞大的代码库,使用Cocoapods时遇到了一些麻烦。因此,我们开发了自己的名为的元构建系统phoenx
。Phoenx可以生成任意复杂度的Xcode项目和工作区设置。它使用元数据文件(诸如Podfiles和Podspecs之类的东西)来生成项目等。构建设置将存储在xcconfig文件中。目前它不提供任何设置工具,因此您必须花费一些时间来手工编写xcconfig和元数据文件。不过,我们正在研究一种更方便的方式来使用它。如果您想尝试一下,可以通过安装它sudo gem install phoenx
。文档可在GitHub上找到。
希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句