Git:来自同一分支的新拉取请求仍然显示以前的提交

Git: New pull request from the same branch still shows previous commits

我在 github 上分叉了一个 repo,然后我做了 git checkout X 并对分支 X 做了一些更改。完成后,我从分叉回购的分支 X 向原始回购的分支 X 提出了拉取请求。
我的更改与原始回购的分支 X 合并,然后我进行了更多更改,并从我的分支 X 向原始回购的分支 X 发出了另一个拉取请求。但是,这仍然显示我之前合并的提交,如下所示,

这里,Jul 05, 2017 之前的提交已经合并到原始仓库的分支 X。我只需要 Jul 06 上的提交即可显示在此拉取请求中。尝试了一段时间后,我无法找到解决方案。这是我根据 this post 所做的,

  • 像这样设置新的上游 -
    git remote add upstream https://path/to/original/repo.git
  • 获取更改以更新我的分叉回购 - git fetch upstream
  • 变基到分支 X - git rebase X
  • 但是,现在我看到为拉取请求准备的更大的提交列表。我确定我不完全理解拉取请求是如何工作的,但我假设这是因为我的分叉回购不知道以前的提交已经被合并。
    我知道通常的工作流程应该是分叉回购协议,为每个更改创建一个新分支,提出拉取请求,一旦合并更改就删除分支。我没有意识到这一点并偶然发现了这个问题。我如何只在拉取请求中包含新的(未合并的)提交,而不是所有以前的提交?

    一种方法是 cherry-pick 来自上游的新分支的提交:

    git fetch upstream X:X_new
    git checkout X_new
    git cherry-pick 92495c5
    git cherry-pick ...
    

    然后您可以打开一个新的拉取请求。如果您想保留相同的拉取请求,您需要将其重命名为旧名称,并强制推送到您的仓库:

    git checkout X
    git checkout -b X_backup
    git branch -D X
    git checkout X_new
    git checkout -b X
    git push origin X -f
    

    然后如果符合您的需要,您可以删除其他分支:

    git branch -D X_backup
    git branch -D X_new