每当我从中央存储库更新我的存储库时,我都会在我的主分支上进行某些 merge 提交。现在,每当我从 master 创建一个新分支时,这些提交都会出现在非常烦人的 pull 请求中。我怎样才能删除这些提交并在将来更新时避免它们? 我知道有人问过这类问题,但对我没有任何帮助。
最佳答案
这里的问题是您的主分支包含不属于上游存储库的提交(特别是 merge 提交)。因此,您基于此主分支的任何分支也将有这些提交,因此任何要求将这些分支之一 merge 到上游主分支的 PR 也将包括它们。
要解决此问题,您可以将本地主节点 rebase 到上游存储库中的主节点。默认情况下,git rebase
会忽略 merge 提交,因此这应该会从分支的历史记录中消除任何多余的提交。假设您将上游存储库设置为名为 upstream
的远程,您可以这样做:
git fetch upstream
git checkout master
git rebase upstream/master
git push -f origin master
或者,如果您确定您的 master 分支不包含您想要保留的更改,这些更改不在上游存储库的 master 分支中(根据您在问题中的陈述,应该是case),你可以简单地重置它以匹配上游主机:
git fetch upstream
git checkout master
git reset --hard upstream/master
git push -f origin master
完成此操作后,将您的功能分支 rebase 到新的主分支上:
git checkout feature
git rebase master
git push -f origin feature
这应该从您的 pull 请求中删除额外的 merge 提交。
关于git - 如何删除 merge 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33502205/