我只使用Xcode 8.2.1的本地存储库。这是一个单人表演,我是唯一一个改变代码的人。多年来,我在GIT中创建了一系列子分支如下:
master
branch1
...
branch14
branch14.1
...
branch 14.13 //added lots of new code/classes
branch 14.13.NewCombatReports //refactor 1 class into 2
在14.13中,我使用xcode"新文件"添加了不少新类。选项和创建新类。一旦我有功能,我创建了一个子分支14.13.NewCombatReports,以隔离重构一个较大的类(将大块代码分离到它自己的新类,BattleManager.m / h)。 / p>
当我满意时,我提交了更改,然后尝试合并到父分支。我收到一条错误说:
由于一个或多个树冲突,无法执行操作。 BattleManagerClass.h和BattleManagerClass.m文件存在树冲突
根据类似SO问题的建议,我在BattleManager *所在的同一目录中运行git status
,返回:
On branch master.DevMain.14.13.newCombatReports
Untracked files:
(use "git add <file>..." to include in what will be committed)
../CloudKitHelperClass (xxxxxxxx's conflicted copy 2016-11-18).m
../yyyyyy.xcodeproj/project.xcworkspace/xcuserdata/thunk.xcuserdatad/.gitignore
../yyyyyy.xcodeproj/project.xcworkspace/xcuserdata/thunk.xcuserdatad/UserInterfaceState (xxxxxxxx's conflicted copy 2016-11-18).xcuserstate
../yyyyyy.xcodeproj/xcuserdata/thunk.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
nothing added to commit but untracked files present (use "git add" to track)
这些似乎与新的BattleManager类无关。经过深思熟虑,并没有真正了解我在GIT中所做的事情,我最终从xcode项目中移除了类,并将BattleManager文件移到了〜/ tmp。我提交了更改,然后成功地将14.13.NewCombatReports中的其余更改合并到14.13。那时,我重新将新的BattleManager类添加回14.13并重建。一切都很好,或者我认为。
当我随后尝试将14.13合并到14时,我得到了一个TON的树冲突,抱怨我在14.13中添加的每个类文件。
所以我显然已经做了一些根本错误的事情,因此当我尝试合并包含net新文件的分支时,GIT不喜欢它。我不太了解GIT的运作情况,也不了解:
这个问题似乎非常相似Xcode merge branch,remind tree conflict when add some new file。注释链接到:The operation could not be performed because "PROJECTNAME" has one or more tree conflicts,其中讨论了尝试协调本地和服务器版本之间的目录结构。由于我没有处理服务器,因此我不了解如何应用该建议。
答案 0 :(得分:1)
我在xcode尝试git操作时遇到了类似的奇怪故障。
关闭项目,退出xcode并重新启动已经为我解决了一些问题。
使用gui git工具之一有时也会有所帮助。有几种不同的选项,但我使用gitbox,可从应用商店获得。它有一个强制合并的选项,这可能会解决问题。