2017-01-17 116 views
0

我對git/GitHub非常陌生,經常感到困惑。我特別困惑的是如何將兩個存儲庫與合併衝突結合起來。如何合併衝突存儲庫?

所以,有一個我分叉的同事的基礎知識庫,說他的名字是弗蘭克,所以我把frank/master分爲me/master。現在我做了修改,弗蘭克做了修改,現在me/master提交了10個提交,並且提交了20個提交後的frank/master

現在,我想合併存儲庫。但是,我和Frank都編輯了相同的文件,這意味着無法自動合併拉取請求。

我認爲解決這個問題的最簡單的方法是在GitHub上創建一個新的分支,我稱之爲devel,並且拉動frank/master。我在GitHub上開了一個拉請求,然後跟着命令行指令來解決衝突:

git checkout -b frank-master devel 
git pull https://github.com/frank/theRepositor.git master 

然後我用git mergetool解決MELD衝突(和編輯的中間文件),然後做

git checkout devel 
git merge --no-ff frank-master 
git push origin devel 

現在的Github頁面說我的開發庫是20後提交和11提交frank/master,但拉請求仍然打開,無法解決。

我做了什麼錯誤,以及解決這些衝突並將庫合併回來的正確工作流程是什麼?

+0

什麼是推的輸出?它成功了嗎?通常情況下,在這種情況下重新綁定比合並更改更容易。基本上,你接下來要做的是用法蘭克斯更新主人,並在上面應用你的改變。那麼你做什麼更明顯。 – Rik

+0

無論如何,我認爲解決辦法是'簽出-b坦率的主人起源/ devel',因爲如果你仍然有一個本地版本的devel,它將基於此。或結帳並首先拉'devel' – Rik

+0

@Rik使用建議的命令,我得到'error:pathspec'origin/devel'與git已知的任何文件都不匹配。' – user3825755

回答

1

您可以在GitHub Web UI中解決簡單的合併衝突,如您正在描述的合併衝突。看看這篇文章:https://help.github.com/articles/resolving-a-merge-conflict-on-github/

如果一個合併衝突發生,因爲有在同一條線上的拉請求的兩個分支之間的相同文件的區別,你現在可以打解決衝突按鈕,在發現在拉請求的主體中。這將啓動一個文本編輯器,您可以在其中解決問題。所有其他類型的合併衝突必須爲resolved locally on the command line

解決合併衝突時,您可以選擇保留某個分支機構的內容或進行全新更改。只需找到並刪除衝突標記(<<<<<=====>>>>>),進行更改,打標記爲解決按鈕,然後提交更改按鈕。當您解決了所有合併衝突時,合併請求按鈕將變爲綠色,這意味着您可以合併您的更改。這假設任何必需的狀態檢查都已通過,並且您有權合併到該分支。

要了解更多信息,請訪問合併衝突GitHub的幫助文章:https://help.github.com/articles/about-merge-conflicts/

+0

謝謝,我不知道這是可以直接在GitHub上。如果我沒有記錯,拉請求頁面上沒有這樣的按鈕,可能是因爲有衝突的文件不能在GitHub編輯器中編輯。 – user3825755