21

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

这些是我得到的屏幕。显示具有源代码控制状态的文件

我尝试提交时的窗口

错误信息

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

4

6 回答 6

19

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

  1. 打开终端
  2. 转到您的项目存储库文件夹(包含 .git 隐藏文件的文件夹)
  3. 把你的合并头移到一边打字mv .git/MERGE_HEAD .git/MERGE_HEAD_STUCK

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

  1. 打开管理器 - 存储库“文件 > 源代码管理 > 存储库...”
  2. 找到您的项目的存储库并从这里取。

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

注意:考虑从您的 git 存储库中删除 .DS_Stores

于 2012-05-24T13:12:12.837 回答
6

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

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

合并和修复冲突git mergetool

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

最后提交更改git commit

于 2015-02-23T08:50:34.863 回答
4

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

我从来没有解决过 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 中重新提交。

于 2012-05-13T02:28:32.810 回答
2

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

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

于 2016-08-22T10:01:33.413 回答
1

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

于 2012-06-16T22:32:44.247 回答
0

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

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

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

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

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

于 2016-01-08T20:33:52.990 回答