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

时间:2017-07-06 20:17:30

标签: git github pull-request

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

此处,直到Jul 05, 2017的提交已经合并到原始仓库的分支X。我只需要Jul 06上的提交来显示此拉取请求。经过一段时间的努力,我无法找到解决方案。以下是我基于this帖子所做的事情,

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

    1 个答案:

    答案 0 :(得分:2)

    一种方法是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