如何删除合并提交

Ish*_*ati 2 git github

每当我从中央存储库更新我的存储库时,我的master分支上就有某些合并提交。现在,每当我从master创建一个新分支时,这些提交就会出现在请求中,这很烦人。如何删除这些提交并在将来更新时避免它们?我知道有人问过这类问题,但对我来说还没有任何作用。

Aje*_*i32 5

这里的问题是您的master分支包含不属于上游存储库的提交(特别是合并提交)。因此,您基于该master分支的任何分支也将具有这些提交,因此任何要求将这些分支之一合并到上游master的PR都将包括这些提交。

要解决此问题,您可以将本地母版库从上游存储库重新部署到母版库。默认情况下,git rebase忽略合并提交,因此这应该从分支的历史记录中消除任何多余的提交。假设您已将上游存储库设置为名为的远程站点upstream,则可以这样进行:

git fetch upstream
git checkout master
git rebase upstream/master
git push -f origin master
Run Code Online (Sandbox Code Playgroud)

或者,如果您确定您的master分支中没有要保留的更改,这些更改尚未出现在上游存储库的master分支中(根据问题中的说明,应该是这种情况),您可以简单地将其重置以匹配上游主服务器:

git fetch upstream
git checkout master
git reset --hard upstream/master
git push -f origin master
Run Code Online (Sandbox Code Playgroud)

完成此操作后,将功能分支重新建立到新的master分支上:

git checkout feature
git rebase master
git push -f origin feature
Run Code Online (Sandbox Code Playgroud)

这应该从您的拉取请求中删除多余的合并提交。