git - 如何删除 merge 提交

标签 git github

每当我从中央存储库更新我的存储库时,我都会在我的主分支上进行某些 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/

相关文章:

git - 致命 : . git/info/refs 无效 : is this a git repository?

PHP Github Pull脚本错误 'permission denied (publickey)'

git 存档返回 "fatal: Not a valid object"

git - 修改 Github 上推送提交的用户名

git - 我们可以在 git-flow 中将 develop 分支 merge 到 Feature 分支吗?

visual-studio - GitHub 和 Visual Studio

git - 如何更改我在 GitHub 上的作者姓名?

git - 我怎样才能撤消从以前的提交 : A Gitastrophy 删除

针对组织和用户的 GitHub v4 API 查询

git - 在 Git 世界中切换到 master 分支时 'Checking out files' stat 表示什么?