多用户 Github 拉取请求

38

别人发起的拉取请求,我能否修改?

假设我是项目X的维护者,用户A给我发送了一个拉取请求。在合并之前,我想要对一些内容进行修改,而且可以很快地自己完成。那么如何简单地实现这个目标,并将它们都保留在一个拉取请求中呢?

这样做是否可行?

6个回答

25

你可以这样做:

在您的 repo 中,

git checkout -b new-branch

然后将用户A的提交拉到你的新分支中:

git pull git://github.com/[User A]/[project-name].git

之后,您可以在新分支中更改它任何您喜欢的方式。当您测试并满意您的更改时,您可以将其合并到主分支中:

git checkout master
git merge new-branch

好的,现在你拥有了包含用户A和你所做出的更改的代码。


1
如果您不想拉取用户的主分支,而是树中的其他分支怎么办?https://dev59.com/jnI-5IYBdhLWcg3wta_w - netpoetica
4
git pull 命令的第二个参数 branch name 是可选的。 - Loren
5
我认为“git fetch upstream pull/<pull id>/head:<new-branch>”比使用git pull拉取PR更好。 - sahil shekhawat
3
当我最终将主分支推回源位置时,这会关闭GitHub上的Pull Request吗?它是否足够聪明,能理解我的合并(用户A的更改+我的更改)实际上包含了Pull Request中的内容?编辑:我的意思是,如果我用这种方式操作,它会在GitHub上标记PR为已合并吗?(当Pull Request中的更改是合并内容的子集时)。 - estan
3
当我将主分支推回源仓库时,这会关闭 GitHub 上的 PR 吗?是的,GitHub 足够智能,能够识别这是同一份 PR,并将其关闭。 - dfarrell07
酷!但是当我从“new-branch”再次输入“git pull”时,它会显示没有可用的跟踪信息。我如何添加“new-branch”的跟踪信息,以便它继续从用户A拉取? - cxrodgers

12

我知道这是一个老问题,但GitHub最近推出了一些新功能,使得实际上可以更新另一个用户提交的拉取请求。

当您创建一个新的拉取请求时,您会看到一个名为“允许维护者编辑”的复选框。默认情况下启用此功能。

有了这个功能,任何对于你的拉取请求目标仓库具有提交权限的人也能够将更改内容推送到你的仓库分支,即拉取请求来源所在的分支。

在团队环境中,每个人都具有“主”仓库的提交权限,但所有工作都在各自的分叉功能分支上完成。如果存在一个需要进行更改的开放式拉取请求,并且主要作者不可用,团队中的其他人员可以直接进行必要的更新,而无需关闭现有的拉取请求并打开一个新的拉取请求,这非常有用。


3
假设您已经拥有用户的Github仓库的读取和写入权限,您可以将内容推送到发起拉取请求的分支上。
在 MERGE PULL REQUEST 按钮之前,它位于拉取请求底部。

您可以通过将内容推送到yyyy/zzzzz上的XXXXX分支来向此拉取请求添加更多提交。


1
很遗憾,以下操作无法生效: git push -f upstream my-updates:refs/pull/999/head ... ! [remote rejected] my-updates -> refs/pull/999/head (deny updating a hidden ref) error: failed to push some refs ...

确实如此。这种行为在Github文档中有描述:https://help.github.com/articles/checking-out-pull-requests-locally/#modifying-an-inactive-pull-request-locally - waldyrious

0

不可能,但是您可以向他们的分支提交第二个拉取请求,如果他们决定合并它,那么它将更新原始拉取请求。


-3

没问题!你只需要查看他们的拉取请求中的分支并进行想要的更改即可。在提交并推送这些更改后,它们应该会反映在 Github 的拉取请求中。


3
未来读者注意:除非我错了,否则只有在分支位于主存储库内时才能这样做。如果您是 original/master 的所有者,请尝试将 contributor/feature 合并到该分支 - 除非 contributor(提交 PR 的人)已经授权您推送到他/她的存储库,否则您将无法推送到 contributor/feature - Sean Allred

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接