2015-11-03 80 views
1

每當我從中央存儲庫更新我的回購時,我的主分支上都有特定的合併提交。現在,無論何時我從主服務器創建新分支,這些提交都會出現在非常煩人的請求中。如何在更新時刪除這些提交併在將來避免它們? 我知道這些問題已被問到,但沒有任何工作對我來說。如何刪除合併提交

+2

未來;不要拉。取而代之。 (或拉,但用'--rebase'。) – Biffen

+0

使用'merge --no-ff'? – mic4ael

+1

@ mic4ael這不會*創建*合併提交? – Biffen

回答

2

這裏的問題是您的主分支包含不屬於上游存儲庫的提交(具體而言,合併提交)。正因爲如此,任何基於這個主分支的分支也會有這些提交,所以任何要求將這些分支中的一個分支合併到上游主分支的PR也會包含它們。

要解決這個問題,您可以將本地主服務器從上游存儲庫重新綁定到主服務器上。默認情況下,git rebase忽略合併提交,所以這應該消除分支歷史記錄中任何多餘的提交。假設你有上游資源庫設置爲遠程命名upstream,你可以是這樣做的:

git fetch upstream 
git checkout master 
git rebase upstream/master 
git push -f origin master 

或者交替,如果你確定你的主分支包含您想保留這不是活得沒有變化牛逼已經在上游資源庫的主分支(其中,基於什麼你中的問題,應該是這樣說),你可以簡單地將其復位即可匹配上游主:

git fetch upstream 
git checkout master 
git reset --hard upstream/master 
git push -f origin master 

此步驟完成後,將您的功能分支重新分配到新的主分支上:

git checkout feature 
git rebase master 
git push -f origin feature 

這應該從您的pull請求中刪除額外的合併提交。

+0

非常感謝。此解決方案工作。 –