如何在GitHub上推送到一个拉取请求?

62

我已将以下内容添加到我的.git/config文件中:

fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

这使我可以拉取拉取请求的差异,但是当我检查它时,它实际上创建了一个同名的分支。有没有办法让我推送到pr/2并将其实际上发送到拉取请求,而不是发送到名为pr/2的新分支?

4个回答

48
这里是GitHub针对合并拉取请求的“通过命令行合并”的说明(我是fulldecent,另一个人是ospr):
步骤1:从你的项目存储库中签出一个新分支并测试更改。
git checkout -b ospr-image-rendering master
git pull https://github.com/ospr/FDWaveformView.git image-rendering

步骤2:合并更改并更新到GitHub。

git checkout master
git merge --no-ff ospr-image-rendering
git push origin master

这里是将您的更改发送回拉取请求(PR)发起者的附加步骤。


git push https://github.com/ospr/FDWaveformView.git ospr-image-rendering:image-rendering

35
谢谢,这正是我想要的。请注意,您可以跳过/推迟第二步(合并到您的主分支),只需将本地更改直接推送到包含PR的分支中即可,一般形式为 git push <pr-repo.git> <your-local-branch-name>:<pr-branch-name> - medmunds
3
这应该就是答案。 - Huan

40

拉取请求就是请求合并某个分支,这意味着在拉取请求被打开后对该分支进行的提交将包括在最终合并中。

如果您可以访问要求合并的分支,则可以向该分支提交更改,拉取请求将随之更新。

示例:

pull/3 请求合并 hotfixmaster

git fetch
git checkout hotfix
git pull origin hotfix

做出改变

git add .
git commit -m "changes!"
git push origin hotfix

现在您的提交将显示在拉取请求中。


20
请注意,自从2016年9月(博客文章)以来,在GitHub上,项目维护者现在甚至可以向所维护的项目的分支提交请求进行提交。请参阅帮助页面 - Michael Paesold

20

好问题。但是如果你能做到的话,我会感到惊讶:

$ cat .git/refs/pull/upstream/839 
f8a9f492098e154b4a8258a941af47c9ca017ada

即使您可以以某种方式更改该引用的内容,GitHub还具有其他元数据,您无法轻松更改。因此,最好将更改推送到创建拉取请求的分支。


即使你可以在某种程度上更改这个引用,但是GitHub还有其他的元数据无法轻易修改。因此,最好将更改提交到创建拉取请求的分支上。
$ git push git@github.com:owner/repo.git HEAD:target-branch

查看github命令行包装器,以便更轻松地从命令行进行github交互:https://hub.github.com/

简而言之:如果您将push到PR所基于的fork / branch,则可以将其推送到现有的pull request。 这通常取决于存储库设置。

git push git@github.com:username/repo-name.git localbranchname:remotebranchname

如果您已将该分支作为本地版本库中的 remote 添加,则可以执行以下操作:

git push remotename localbranchname:remotebranchname

1
GitHub桌面客户端将创建另一个拉取请求(PR),其中包括您检出的原始PR和更改,如果您尝试合并更改到PR。我是从我的主分支上做的,但是你可以做另一个分支,然后创建一个拉取请求到拉取请求。对于这些花哨的Git GUI来说,这一切都是神奇的。

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