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
我在 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
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