【问题标题】:Xcode: Added file in GIT sub-branch, now attempts to merge upward give, "Tree Conflict"Xcode:在 GIT 子分支中添加文件,现在尝试向上合并给出“树冲突”
【发布时间】:2017-06-22 20:38:41
【问题描述】:

我只使用 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 中)。

当我满意后,我提交了更改,然后尝试合并到父分支。我收到一条错误消息:

由于一个或多个树冲突,无法执行该操作。 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 时,我遇到了大量的树冲突,抱怨我在 14.13 中添加的每个类文件。

所以我显然做了一些根本错误的事情,以至于当我尝试向上合并包含净新文件的分支时,GIT 不喜欢它。我不是很了解GIT的工作原理,看不懂:

  1. 试图在本地存储库的上下文中告诉我什么是“树冲突”错误?我不明白我当前的修订与什么冲突。
  2. 如何修复它,以便我可以向上合并包含新文件的分支?

这个问题看起来很像Xcode merge branch,remind tree conflict when add some new file。 cmets 链接到:The operation could not be performed because "PROJECTNAME" has one or more tree conflicts,其中谈到了尝试协调本地和服务器版本之间的目录结构。由于我不是在与服务器打交道,因此我不明白如何应用该建议。

【问题讨论】:

  • 想解释一下否决票?

标签: xcode git git-merge


【解决方案1】:

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

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

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

【讨论】:

  • 有趣。我重新启动,启动 gitbox,提交看起来都很合理。我再次重启xcode,合并成功。
  • 如果将来有任何访问者:现在看来,每当我在子分支中添加新文件时,我都会遇到上述故障,直到我关闭并重新启动 Xcode。然后一切都很好,我可以合并回父级。
猜你喜欢
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2012-10-06
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多