2011-11-29 226 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

非常感謝。我們會再試一次,有衝突的人會確保在提交之前檢查分支。 –