如何在github上推送拉取请求?

lob*_*ati 29 git github pull-request

我已将此添加到我的.git/config文件中:

fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
Run Code Online (Sandbox Code Playgroud)

这允许我拉下拉请求差异,但是当我检查它时,它实际上创建了一个具有相同名称的分支.有什么方法可以让我推送pr/2并让它实际上转到pull请求而不是去一个名为的新分支pr/2

小智 27

Pull Request只是合并某个分支的请求.这意味着在打开pull请求之后对分支进行的提交将包含在最终合并中.

如果您有权访问pull请求要求合并的分支,则可以提交到该分支,并且pull请求将随更改一起更新.

例:

pull/3请求合并hotfixmaster

git fetch
git checkout hotfix
git pull origin hotfix
Run Code Online (Sandbox Code Playgroud)

做出改变

git add .
git commit -m "changes!"
git push origin hotfix
Run Code Online (Sandbox Code Playgroud)

现在,您的提交将显示在pull请求中.

  • 请注意,自[2016年9月(博客文章)](https://github.com/blog/2247-improving-collaboration-with-forks)以来,现在甚至可以在Github上为维护者提交一个分支在项目的**fork**中提取请求.请参阅[帮助页面](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork). (10认同)

Wil*_*ken 22

这是GitHub的"通过命令行合并"拉取请求的指令(我是fulldecent,另一个人是ospr):

步骤1:从项目存储库中,检查新分支并测试更改.

git checkout -b ospr-image-rendering master
git pull https://github.com/ospr/FDWaveformView.git image-rendering
Run Code Online (Sandbox Code Playgroud)

第2步:合并更改并在GitHub上更新.

git checkout master
git merge --no-ff ospr-image-rendering
git push origin master
Run Code Online (Sandbox Code Playgroud)

以下是将更改从上游(?)发送回PR创建者的附加步骤.

git push https://github.com/ospr/FDWaveformView.git ospr-image-rendering:image-rendering
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,正是我想要的.请注意,您可以跳过/推迟步骤2(合并到您的主人),然后在第三步将您的本地更改直接推送到PR.一般形式是`git push <pr-repo.git> <your-local-branch-name>:<pr-branch-name>`. (5认同)
  • 这应该是答案。 (2认同)

ako*_*nov 11

好问题。但如果你能:

$ cat .git/refs/pull/upstream/839 
f8a9f492098e154b4a8258a941af47c9ca017ada
Run Code Online (Sandbox Code Playgroud)

即使您可以以某种方式将该引用更改为您喜欢的内容,github 也有其他您无法轻松更改的元数据。所以更好地推送到分支 pull 是从创建的。

$ git push git@github.com:owner/repo.git HEAD:target-branch
Run Code Online (Sandbox Code Playgroud)

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

更新:如果您推送到 PR 所基于的分支/分支,您可以推送到现有的拉取请求。根据回购设置,这通常是可能的。

git push git@github.com:username/repo-name.git localbranchname:remotebranchname
Run Code Online (Sandbox Code Playgroud)

或者,如果您remote在本地存储库中添加了 fork ,则:

git push remotename localbranchname:remotebranchname
Run Code Online (Sandbox Code Playgroud)