2016-11-11 98 views
2

我很困惑正確的方式來手動合併請求,並理解爲什麼有不同的建議。手動合併混帳請求

假設最簡單的情況:一個master(長生命期)分支和一個單一feature分支與幾個提交拉取請求,但顯示與主分支合併衝突。

GitHub上說的事:

git fetch origin 
git checkout -b feature origin/feature 
git merge master 

然後

git checkout master 
git merge --no-ff feature 
git push origin master 
  1. 我們爲什麼要合併到masterfeature然後反轉之後呢? This SO表示訂單無關緊要,但This SO表明存在與父母有關的問題。

  2. This SO討論手動合併拉請求,但說你只需要合併你的主分支你的功能分支,就是這樣。這與GitHub所說的一致嗎?

回答

2

對於你的觀點2,它沒有說將故事合併爲主,因爲這不是OP所要做的。

關於你的問題。假設我們有這樣的:

   master 
*---*----*----* 
     \   
     ---*----* 
       feature 

如果合併功能,這將帶來做成主你的特性分支的所有更改。該特性分支將包含來自主的變化特徵的最新變化:

   master 
*---*----*----* 
     \   \ 
     ---*----*--* 
        feature 

將因此仍指向以前一樣犯,但功能將指向一個新的提交,這兩個分支都有所有變化。

所以你仍然需要合併從功能到主的變化。現在這是一個非常簡單的操作,因爲主人是功能的祖先。因此,合併是一個簡單快進

*---*----*----* 
     \   \ 
     ---*----*--* 
        feature 
        master 

我更喜歡保持線性的歷史,因此,重訂新特性分支上主合併成主人面前。但你的里程可能會有所不同

+0

嗨,謝謝你的幫助!保持線性歷史是有意義的,但如果'feature'分支是短暫的(即在合併後將被刪除),將'feature'簡單地合併到'master'中是正確的,解決出現的衝突,然後刪除特徵? – ministry

+0

如果這對你有用,是的。 –