【问题标题】:Git: New pull request from the same branch still shows previous commitsGit:来自同一分支的新拉取请求仍显示以前的提交
【发布时间】:2017-07-06 20:17:30
【问题描述】:

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

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

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

    【问题讨论】:

      标签: git github pull-request


      【解决方案1】:

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

      【讨论】:

        猜你喜欢
        • 2018-05-14
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2013-04-24
        • 2012-04-01
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多