Xcode:在GIT子分支中添加了文件,现在尝试向上合并," Tree Conflict"

时间:2017-02-05 23:57:49

标签: xcode git git-merge

我只使用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的运作情况,也不了解:

  1. 什么是&#34;树冲突&#34;在本地存储库的上下文中试图告诉我的错误?我不明白我当前的版本与之相冲突。
  2. 如何修复它以便我可以向上合并包含新文件的分支?
  3. 这个问题似乎非常相似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,其中讨论了尝试协调本地和服务器版本之间的目录结构。由于我没有处理服务器,因此我不了解如何应用该建议。

1 个答案:

答案 0 :(得分:1)

我在xcode尝试git操作时遇​​到了类似的奇怪故障。

关闭项目,退出xcode并重新启动已经为我解决了一些问题。

使用gui git工具之一有时也会有所帮助。有几种不同的选项,但我使用gitbox,可从应用商店获得。它有一个强制合并的选项,这可能会解决问题。