2016-09-16 181 views
3

我正在使用GitHub網站提交請求(例如,開發 - 特性 - >開發)。有些情況下,有衝突,它告訴我,它不能自動合併,並運行以下命令:GitHub - 合併請求 - 合併

git checkout development 
git merge development-Feature 
git push origin development 

當我在本地運行此命令,我得到:

merge made by the 'recursive' strategy 

在本地它沒有任何衝突(它會自動合併我的衝突文件)。

我的問題是,GitHub(網站)是否檢查任何衝突(即使它們可以自動合併),如果有任何衝突,就放棄?我試圖找出GitHub在執行pull請求時使用的命令,但我似乎無法找到它。

謝謝,

+0

您可能需要改變問題的標題,以更好地描述您的問題 –

回答

1

你這樣做的方式相反。您應該將功能分支中的開發合併到一起。

您的本地副本development仍處於「舊版」版本。您必須手動更新它。

如果你從任何分支輸入git fetch -p,它將從服務器下載有關分支的「元數據」,換句話說,你的本地git將能夠知道你沒有更新最新版本。 -p參數將從本地計算機中刪除不再在github上的分支的元數據。

現在執行fetch命令後,您可以檢出您的開發分支,並且您應該看到一條消息,指出您「落後」。

現在您需要輸入git pull origin development(同時在開發分支上)才能真正從服務器獲取數據。

回到你的功能分支,並做一個git merge development。你會得到github正在討論的衝突。修復它們,提交併推送。然後Github上,您就可以合併

TL;博士

  1. git checkout development
  2. git pull origin development
  3. git checkout development-Feature
  4. git merge development
  5. 解決衝突手動
  6. git commit
  7. git push origin development-Feature
+0

注意的是,OP需要development'復位'之前的'混帳merge'的問題進行。 –

+0

我知道這是做分支的「標準」方式,但我們做的有點不同。我們儘量保持我們的功能分支儘可能乾淨。這樣我們就可以隨時擁有一個穩定的發佈分支。例如,在傳統方法中,如果featureA和featureB被合併到開發中(先反向合併),那麼我們發現featureB存在一個問題,我們的發佈將被擱置,直到該問題得到解決。通過我們的方法,我們可以隨時部署功能A. – user472292

+0

除了「過程」討論之外,我對GitHub如何處理合並更加好奇。你對此有所瞭解嗎?我的主要問題是爲什麼我的本地git自動合併,但GitHub不? – user472292