这些是我得到的屏幕。
![显示具有源代码控制状态的文件](https://istack.dev59.com/mp2Lq.webp)
![提交时弹出的窗口](https://istack.dev59.com/JsPpF.webp)
![错误消息](https://istack.dev59.com/dPdkX.webp)
这是一个常见的令人沮丧的情况:
mv .git/MERGE_HEAD .git/MERGE_HEAD_STUCK
将合并头移开你的问题应该已经解决了一半,在某些情况下,你需要从组织者那里拉取:
然后你应该能够再次在 Xcode 中使用 Git,但可能需要解决一些合并冲突,至少这将在 Xcode 中而不是在终端中进行。
打开终端并使用以下命令:
查找有冲突的文件:git status
合并并解决冲突:git mergetool
您可能需要添加一些未被跟踪的文件:git add .
最后提交更改:git commit
在所有合并冲突解决之前,您无法提交。根据您所描述的情况,有些文件是您和其他人都修改过的。这些是必须解决的冲突。
我从未在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中提交回来。
Xcode有xcuserdata文件问题,我不得不放弃更改并重新提交
我用了一种完全不同的方法来解决这个问题,只使用了Xcode的源代码控制。
背景:另一个团队通过Beanstalk将更改推送到远程Git存储库。在我的端上,.xcodeproj文件以不同的目录方式出现,更改没有生效。后来,当我尝试提交时,在Xcode中收到了Tree Conflict错误。
Tree Conflict Screenshot
由于使用Xcode几乎不可能进行修正,因此我用从Git服务器下载的版本替换了.xcodeproj文件。结果是... Xcode项目似乎清理干净了,但所有来自损坏的Pull的更新都显示为我所做的更改,并被暂存以进行提交。 Look at all these Mods and Added files 但是,在尝试提交时,我收到了与此处讨论的相同的“fatal: cannot do a partial commit during a merge”错误。
以下是我解决问题的方法...(请注意,我是一名新手程序员,所以我的理解可能有所不足...但我的无知使我找到了另一种方法来解决这个问题。)首先,我将主分支克隆到一个辅助分支,并切换到该分支。然后,我创建了一个工作副本,并将该工作副本的目录放在原始项目目录之外。(我不知道这是否必要,但我读了其他故障排除技术。)然后我切换到主分支,在那里我意识到我所有已提交更改(缓存更改)的文件都不见了。为了确保所有文件都更新到由另一方进行的最新更改,我创建了一个名为ThirdBranch的新分支,它复制了所有文件并将其推送到Git服务器,并让Beanstalk逐行比较我的主干分支的服务器版本和我刚刚推送的ThirdBrach分支,其他一方做出的所有更改都存在于我的Xcode中。这意味着我的主仓库和Git主仓库是相同的,这证实我只使用Xcode解决了问题。
不要问我如何做到的,除了我刚才描述的内容之外...并且一定要填补我留下的空白。我是新手,我不理解所有的东西。也许有经验的程序员可以将无关的信息与相关的信息分开,并更清晰地重新创建这个技术,这也是我发布这篇文章的部分原因。