How to update a pull request from forked repo?
因此,我先是分叉回购,然后承诺分叉回购。然后我打开了一个请求。拉请求列出了我想要的所有更改。
在审查了我的请求之后,回购所有人在接受之前希望我做一些更改。我已经在fork中进行了这些更改,现在如何用这些更改更新pull请求(或者这不是我应该如何处理它)?
- 代码审阅后更新请求的首选Github工作流的可能副本
- @Pauldraper我不同意,那个用户已经知道并提出了更新拉请求的各种方法,并询问哪种方法最好。另一方面,我不知道任何方法,并且在问他们的存在。正如这个问题的流行程度所表明的那样,许多其他用户也是如此。
- 我认为流行的原因是:(1)这是一个非常好的、常见的问题;(2)一些用户不是在这里而是在这里。如果最初确定为副本,他们会发现另一个问题是相同的,并回答他们的问题。
你做得对。拉请求将自动更新。过程是:
打开拉请求
根据本地回购中的反馈提交更改
推到你叉子的相关分支
拉请求将自动在拉请求讨论的底部添加新提交(即,它已经存在,向下滚动!)
- 好极了!除了实际的拉车请求,我到处都在检查。它的魔力,黑色的魔力,我不会质疑它。
- 这是在分支机构工作的一个很好的理由。例如,如果您总是被推到master,则可能会无意中添加到以前的拉请求中。
- 不知何故,这些变更并没有以它们应该的方式反映在这个请求中。实际分支是在拉请求之前两次提交。github.com/akshay2000/xbmcremoter/pull/17
- 这种情况似乎已经不复存在了,即使它是在过去。下面是一个拉请求的例子(github.com/toopay/bootstrap markdown/pull/167),与分支本身(github.com/mhuggins/bootstrap markdown/commits/…)相比。奇怪的是,既然这个过程似乎已经改变了,怎么再这样做呢?
- 在我看来,Github用户界面有点令人困惑——它在注释下面以某种小字体显示了新的请求,因此可能不太明显,请求实际上是在几分钟前发出的。
- 我一直在检查请求的顶部,放弃并尝试创建一个新的请求。"(也就是说,它已经在那里了,向下滚动!)救了我。它实际上就在那里-在底部
- Github实际上告诉您:"通过在更改WorldProject时推送SolveWorldHunger分支来添加更多提交。"
- 这里也一样-我看不到来自主存储库中分叉回购的更改。看起来像Github bug
- 看起来确实像个虫子,而且偶尔只会发生一次。我试图推动一个空承诺,迫使GH更新我的公关,但什么都没有发生。我向Github工作人员报告了。
在Github中更新拉请求与将所需的更改提交到现有分支(与拉请求一起使用)一样简单,但通常还希望将更改压缩为单个提交:
1 2 3 4 5 6 7 8 9
| 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 |
…现在拉请求只包含一个提交。
有关重新定位的相关链接:
- https://help.github.com/articles/about-git-rebase
- 将我的所有提交压缩为一个Github请求
- 赞成提及Rebase。它有助于消除修订历史中的噪音。
- +11(是的,我打算把钥匙重复一下。使用git-rebase/pick/squash非常有效。
- 这种方法的缺点是,您正在删除先前的提交。这意味着,如果在拉请求中作出注释,它们将丢失,并随原始提交一起消失。
- 在bitback中,您可以在pull请求中看到关于文件"以前版本"的注释。虽然在gerrit中看到类似的内容会很高兴,您可以在其中修补提交,并可以看到带有注释的整个历史。它提供了一个整洁的Git历史记录和可追溯性,当您返回并看到关于任何提交的完整讨论时。
只需推到拉请求引用的分支。只要拉请求仍处于打开状态,它就会自动更新为任何添加的提交。
我是通过以下步骤完成的:
git reset --hard 。
我想修改代码吗
江户十一〔一〕号
埃多克斯1〔2〕
埃多克斯1〔3〕
- 很好,我喜欢这种方法!Github甚至隐藏(但保留)代码的过时部分和相关注释。记住,如果pull请求包含多个提交,而需要修复的请求不在分支的尖端,"git reset--hard"将放弃指定ID之后提交的所有更改。我有一个手动应用的备份。但是,如果有多个额外的提交,就不太方便了…
如果在Windows上使用GitHub:
在本地进行更改。
打开github,切换到本地存储库,双击存储库。
将分支(靠近窗口顶部)切换到创建拉请求的分支(即比较分支侧的分支)
应该可以看到选项,在右侧输入提交注释并提交对本地回购的更改。
单击顶部的"同步",这将把您的提交从本地推到GitHub上的远程fork。
拉请求将自动更新为附加提交。这是因为拉取的请求表示与分叉分支的差异。如果您转到请求页面(您和其他人可以在其中对请求进行评论的页面),那么提交选项卡应该具有额外的提交。
这就是为什么在开始进行自己的更改之前,您应该为计划放入拉请求中的每一组更改创建一个分支。这样,一旦您发出请求,您就可以创建另一个分支并继续处理其他任务/功能/错误修复,而不会影响以前的请求。