将上游git更改与挂起的pull请求合并

时间:2012-11-26 08:19:41

标签: git github

我在GitHub的常见工作流程中遇到git问题。

  1. 我叉子回购
  2. 我提交了一些更改
  3. 我向上游回购提出拉取请求
  4. 当上游开发者坐在我的请求上时,旋转大拇指。
  5. 上游开发者对其回购进行更改
  6. 他们会查看您的拉取请求,但由于其树中的更改将不再适用,因此他们会要求您更新拉取请求。
  7. 我取了&将更改从上游合并到我的仓库,解决冲突,提交更改
  8. 我在我的拉动请求中重新提交,以使其整洁。
  9. 这就是出现问题的地方:我的拉取请求现在包含了步骤2和7之间发生的所有更改,包括上游开发人员自己的更改。在最近的一个例子中,这扩展了10行拉取请求到超过12,000行。

    我应该如何将我的原始提交重新应用到更高版本的上游回购中而不将其更改进入我的拉取请求?

2 个答案:

答案 0 :(得分:12)

更改此

  

7)我取了&合并从上游到我的仓库的变更,解决冲突,提交变更。

     

8)我在我的拉动请求中重新提交以使其干净整洁。

  

我将我的回购转移到上游,使其整洁。

我们假设您从feature分叉upstream/master分支,我们将使用临时分支来保证安全。如果出现问题,只需删除feature-rebase分支并重新开始。

git checkout feature
git checkout -b feature-rebase
git rebase -i upstream/master

这将在upstream/master之上重播您的提交,就像您现在已经分叉一样。一切都看起来不错,请将旧的feature分支替换为重新定义的版本。

git branch -m feature feature-old
git branch -m feature-rebase feature
git branch -d feature-old
git checkout feature
git push -f origin feature

答案 1 :(得分:2)

如果您已经这样做了,我无法解决您的问题,但是当您提交拉取请求时,最简单的方法是为其创建一个单独的分支。

通过这种方式,您可以轻松地定义提交请求中的提交内容,以及稍后还可以更新提取请求以包含新更改。

如果您想要合并来自上游的新更改,您可以获取这些更改,并在其上重新定义主题分支。

在github中发出pull请求时,您可以选择此分支,这样可以确保提取正确的提交。

每次你推到这个分支(甚至push -f)都会自动更新拉取请求。