Github - 如何解决冲突问题

4

我和我的朋友正在尝试开发一个 iPhone 项目,但在使用 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中删除了有趣的 <<<<<

enter image description here


使用命令行git程序。 git status显示了什么?在尝试推送之前,您是否提交了合并冲突的解决方案? - Daenyth
@Daenyth:是的,我在尝试推送之前已经尝试提交了我的合并冲突解决方案。提交没有问题。但是推送时出现了错误。git status会将此记录到控制台中:#当前未在任何分支上。 无需提交(工作目录干净) - n.evermind
你遇到的问题之一是使用了GitHub Mac客户端。它看起来很不错,但并不能很好地展示分支结构。建议尝试使用SourceTree或GitX以更好地可视化您的代码库。 - Marnen Laibow-Koser
1个回答

1
当前不在任何分支上。没有要提交的内容(工作目录干净)(如this example中所示)。
这意味着您处于DETACHED HEAD状态,并且解决方案(git log、git reflog等)在“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?”中提出的解决方案。

谢谢提供解决问题的建议。但是,我不明白我应该如何在第一时间处理这种情况。除了删除+<<<<<<<<<<和+===========之外,我需要做什么? - n.evermind
1
不要删除好的部分(这是解决冲突的方法)。但是,在进行任何修改之前(无论是否有冲突),您首先需要确保已经检出了一个分支,而不是SHA1或标签。否则,在尝试提交时会出现问题。 - VonC
非常感谢。我们会再试一次,有冲突的人在提交代码之前一定要先检查分支。 - n.evermind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接