2015-11-03 55 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

非常感谢。此解决方案工作。 –