如何从forked repo更新pull请求?

时间:2012-03-20 16:04:58

标签: git version-control github

所以我首先分叉了一个仓库,然后提交了一个分叉仓库。然后我打开了拉取请求。 pull请求列出了我想要的所有更改。

在审核了我的拉取请求后,回购所有者希望我在接受之前做出一些更改。我已经在我的fork中进行了这些更改,现在如何使用这些更改更新pull请求(或者这不是我应该如何处理它)?

5 个答案:

答案 0 :(得分:537)

您已正确完成。拉取请求将自动更新。这个过程是:

  1. 打开请求
  2. 根据您当地仓库中的反馈提交更改
  3. 推送到叉子的相关分支
  4. 拉取请求会自动在拉取请求讨论的底部添加新提交(即它已经存在,向下滚动!

答案 1 :(得分:74)

在GitHub中更新pull请求就像将所需的更改提交到现有分支(与pull请求一起使用)一样简单,但通常也需要将更改压缩到单个提交中:

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

...现在拉取请求只包含一个提交。


有关变基的相关链接:

答案 2 :(得分:31)

只需按下pull请求引用的分支即可。只要拉取请求仍然打开,它就会自动更新任何添加的提交。

答案 3 :(得分:10)

我是通过以下步骤完成的:

  1. git reset --hard <commit key of the pull request>
  2. 我想要做的代码改变
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

答案 4 :(得分:3)

如果在Windows上使用 GitHub

  1. 在本地进行更改。
  2. 打开GitHub,切换到本地存储库,双击存储库。
  3. 将分支(靠近窗口顶部)切换到您创建拉取请求的分支(即比较叉侧的分支)
  4. 应该看到右边输入提交评论的选项,并提交对本地仓库的更改。
  5. 点击顶部的同步,除其他外,将您的提交从本地推送到GitHub上的远程分支。
  6. 拉取请求将通过其他提交自动更新。这是因为pull请求表示fork分支的diff。如果您转到拉取请求页面(您和其他人可以对您的拉取请求发表评论的页面),则“提交”选项卡应该有您的其他提交。
  7. 这就是为什么在开始更改自己之前,应该为计划放入拉取请求的每组更改创建一个分支。这样,一旦你发出拉取请求,你就可以创建另一个分支并继续处理其他任务/功能/ bug修复,而不会影响之前的拉取请求。