2011-11-29 219 views
4

我和朋友正在尝试使用iPhone项目,但使用github进行版本冲突管理时遇到问题。Github - 如何解决冲突

实施例:我们两人正在研究的代码的某一行和Xcode 4.2(和GitHub的MAC客户端)

int majorVersion = 0; 

1)他改变代码int majorVersion = 999;提交更改;同步 - 没有问题,最终会在github上

2)同时,我的代码更改为int majorVersion = 666;则:

  • 我提交更改
  • 冲突 - 我选择的代码行选择我的某些版本(int majorVersion = 666;
  • 在Xcode中,我删除搞笑< < < < < <头位(因此,只有int majorVersion = 666;保持)
  • 提交更改
  • 最后:我尝试发布的分支,但出现以下错误:

error: unable to push to unqualified destination: HEAD The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to ' https://github.com/XXX/XXX.git '

什么是我们做错了什么?是我删除了有趣的< < < < < <和xCode中的HEAD声明的主要问题(请参见下面的截图)?我们应该如何处理这种冲突?

enter image description here

+0

使用命令行'git'程序。 'git status'说什么?尝试推送之前,您是否提交过合并冲突解决方案? – Daenyth

+0

@Daenyth:是的,我试图在尝试推送前提交合并冲突解决方案。承诺不是问题。推动提示错误。 git状态将记录到控制台:#当前没有在任何分支上。 没有提交(工作目录干净) –

+0

你的问题的一部分是,你使用的是GitHub Mac客户端。它看起来不错,但并没有真正显示分支结构。尝试使用SourceTree或GitX,以便更好地查看您的回购。 –

回答

1

Not currently on any branch. nothing to commit (working directory clean)
(as seen in this example)

这意味着你在一个DETACHED HEAD,和决议(git的日志,引用日志的git,...)在 “Not currently on any branch + git commit + checkout when not in any branch. Did i loose my changes?” 被提及。

问题不在于它本身的并发修改,而在于你如何在XCode4中检出代码:任何结帐标记或SHA1都会导致分离的头部情况。

另请参阅“Git Checkout reverted code to older commit, how to revert back?”中提出的解决方案。

+0

感谢您提出如何解决问题。但是,我不明白我该如何处理这种情况。而不是删除+ <<<<<<<<<<和+ ===========我到底需要做什么? –

+1

没有删除部分如果好(这是你如何解决冲突)。但在开始进行任何修改之前(无论是否存在冲突),您首先需要确保已签出分支,而不是SHA1或标签。否则,在尝试提交时会遇到问题。 – VonC

+0

非常感谢。我们会再试一次,有冲突的人会确保在提交之前检查分支。 –