失败的 Xcode Git 合并卡住了

Posted

技术标签:

【中文标题】失败的 Xcode Git 合并卡住了【英文标题】:Failed Xcode Git Merge is stuck 【发布时间】:2012-05-21 01:21:13 【问题描述】:

我们有一个基于 git 的项目,有一个朋友和一个主分支。他对一些文件进行了一些更改,我对其他一些文件进行了更改,我们很可能对几个相同的文件进行了更改。他承诺并将他的所有更改推送到 repo。然后我去提交我的更改并尝试拉他的更改。我遇到了一些冲突,我主要解决了他的更改,因为它们是我没有更改的文件。然后当我尝试推送时,我遇到了致命错误:在合并期间无法进行部分提交。

这些是我得到的屏幕。

我能做什么?该项目运行良好,只是游戏的主菜单没有显示应有的图像,即他正在处理的图像和他处理的类文件,除了其他几个。

【问题讨论】:

感谢您的回答,对我有帮助!!! 【参考方案1】:

这是一种常见的令人沮丧的情况:

    打开终端 转到您的项目存储库文件夹(包含 .git 隐藏文件的文件夹) 将合并头移到一边输入mv .git/MERGE_HEAD .git/MERGE_HEAD_STUCK

你的问题应该已经解决了一半,在某些情况下你需要从组织者那里拉一下:

    打开管理器 - 存储库“文件 > 源代码管理 > 存储库...” 找到您项目的存储库并从此处拉取

那么你应该能够再次从 Xcode 使用 Git,你可能需要解决一些合并冲突,但至少这将在 Xcode 下而不是在终端上。

注意:考虑removing the .DS_Stores from your git repository

【讨论】:

【参考方案2】:

打开终端并使用以下内容:

查找哪些文件有冲突:git status

合并和修复冲突git mergetool

您可能需要添加一些未跟踪的文件:git add .

最后提交更改git commit

【讨论】:

【参考方案3】:

在解决所有合并冲突之前,您无法提交。根据您的描述,您都更改了一些文件。它们是您必须解决的冲突。

我从未解决过 Xcode 中的冲突。您始终可以从终端应用程序解决冲突。一旦进入终端并假设您已经安装了 Xcode 命令行工具,请尝试:

git mergetool
git commit

这将/应该弹出一个 FileMerge 窗口,允许您选择您或他的编辑。您从终端获得的另一个选择是通过简单地接受他的更改来解决冲突。这会破坏您的代码,但您可以返回并修复它。对于该尝试:

git status
git checkout --theirs -- /path/to/a/conflicted/file ...
git add -- /path/to/a/conflicted/file ...
git commit

然后编辑文件以修复您的功能。解决所有冲突后,您将能够在 Xcode 中重新提交。

【讨论】:

【参考方案4】:

当我遇到 XCode 问题时,我只需恢复到 AppCode(如果需要,可以试用版),并从***项目文件夹进行提交。

AppCode 检测合并场景,并通过部分合并解决问题。同样如果 AppCode 不能整理出来,我使用 Github 桌面。只有当这一切都失败时,我才会恢复到低级命令。

【讨论】:

【参考方案5】:

Xcode 的 xcuserdata 文件有问题,我不得不放弃更改并重新提交

【讨论】:

【参考方案6】:

我用完全不同的方法解决了这个问题,只使用 Xcode 的源代码控制。

背景:另一个团队将更改推送到远程 Git 存储库(通过 Beanstalk)。就我而言,.xcodeproj 文件位于不同的目录下,并且没有进行更改。后来,当我尝试提交时,我在 Xcode 中收到了 Tree Conflict 错误。Tree Conflict Screenshot

由于使用 Xcode 几乎不可能更正,我将 .xcodeproj 文件替换为从 Git 服务器下载的版本。结果... Xcode 项目似乎清理干净了,但是来自损坏的 Pull 的所有更新都显示为我所做的更改,并已为提交而暂存。 Look at all these Mods and Added files 但是,在尝试提交时,我收到了相同的“致命:在合并期间无法执行部分提交”错误,此处讨论。

这是我解决问题的方法...(现在,请了解我是一个新手程序员,所以我可能缺乏一些理解...但是我的无知使我找到了另一种方法来做到这一点。)首先,我将我的主分支克隆到辅助分支并切换到该分支。然后我创建了一个工作副本并将该工作副本的目录放在原始项目目录之外。 (我不知道这是否有必要,但这是我在阅读其他故障排除技术时所做的。)然后我将分支切换到主分支,在那里我意识到我所有的暂存文件(对提交的更改)都消失了。为了确保所有文件都更新为对方所做的最新更改,我创建了一个名为 ThirdBranch 的新分支,它复制了所有文件,将其推送到 Git 服务器并让 Beanstalk 将我的 master 分支的服务器版本与我刚刚推送的 ThirdBrach 分支(逐行),对方的所有更改都出现在我的 Xcode 上。这意味着我的主存储库和 Git 主存储库是相同的,这证明我仅使用 Xcode 解决了问题。

不要问我是怎么做的,除了我刚才描述的......当然要填补我遗漏的空白。我是新手,我什么都不懂。也许有经验的程序员可以将不相关的信息与相关信息分开,并更清楚地重新创建这种技术,这也是我发布此内容的部分原因。

【讨论】:

以上是关于失败的 Xcode Git 合并卡住了的主要内容,如果未能解决你的问题,请参考以下文章

Git 因致命错误而失败。拒绝将不相关的历史与 git push 合并?

如何围绕失败的合并分叉两个git分支

2021-11-17 xcode12.3 &xcode13.1 下lipo合并framework问题

Xcode UI 测试:xcodebuild 无法在 xcode12 上生成 Coverage.profdata,失败并出现错误“错误:无法合并配置文件。”

git分支的创建与合并

git分支合并为啥会发生冲突