如何做GitHub拉取请求

问题描述 投票:275回答:7

如何创建和/或发送拉取请求到GitHub上托管的另一个存储库?

git github pull-request git-fork
7个回答
231
投票

(除了官方的“GitHub Help 'Using pull requests' page”, 另见“Forking vs. Branching in GitHub”,“What is the difference between origin and upstream in GitHub”)

关于拉动请求的夫妻提示:

假设你有第一个forked a repo,这就是你应该在你拥有的那个分叉中做的事情:

  • 创建分支:在分支中隔离您的修改。不要从master创建拉取请求,在那里您可能想要一次累积并混合多个修改。
  • rebase that branch:即使你已经从该分支执行了pull请求,在origin/master之上重新设置它(确保你的补丁仍在工作)将自动更新pull请求(不需要点击任何东西)
  • 更新该分支:如果您的请求被拒绝,您根本无法添加新提交,和/或完全重做您的历史记录:它将再次激活您现有的提取请求。
  • “关注”该分支:即,使其主题“紧密”,不要修改数千个类和所有应用程序,只添加或修复明确定义的功能,保持较小的变化。
  • 删除该分支:一旦被接受,你可以安全地删除你的分支(和git remote prune origin)上的那个分支。 GitHub GUI将建议您在拉取请求页面中删除您的分支。

注意:要编写Pull-Request本身,请参阅“How to write the perfect pull request”(2015年1月,GitHub)


2016年3月:新PR合并按钮选项:请参阅“Github squash commits from web interface on pull request after review comments?”。

squash

回购的维护者可以选择merge --squash那些PR提交。


在拉取请求之后

关于最后一点,自2013年4月10日起,“Redesigned merge button”,该分支机构将被删除:

合并后删除分支也已简化。 我们不会通过额外步骤确认删除,而是在删除分支时立即删除分支,并提供方便的链接以便在您再次需要时恢复分支。

这证实了合并拉取请求后删除分支的最佳实践。


拉请求与请求拉


“存储库”的电子笔记(原文如此)

<humour>

那个(拉取请求)甚至没有被GitHub正确定义!

幸运的是,一个真正的商业新闻组织会知道,并且有一个e-note in order to replace pull-replace by 'e-note'

因此,如果您的存储库需要电子笔记... qazxsw poi。他们知道。

ask Fox Business


198
投票

为了学习如何发出拉取请求,我只是在Github上关注了两个单独的帮助页面(下面链接为子弹点)。以下命令行命令适用于第1部分。第2部分是实际的拉取请求,完全在Github的网站上完成。

</humour>
  • 第1部分:分叉某人的回购:$ git clone https://github.com/tim-peterson/dwolla-php.git $ cd dwolla-php $ git remote add upstream https://github.com/Dwolla/dwolla-php.git $ git fetch upstream // make your changes to this newly cloned, local repo $ git add . $ git commit -m '1st commit to dwolla' $ git push origin master 点击你要贡献的回购中的'fork'按钮,在这种情况下:https://help.github.com/articles/fork-a-repo(Dwolla / dwolla-php) 获取新创建的fork的URL,在本例中为:Dwolla's PHP repo(tim-peterson / dwolla-php) 键入上面的https://github.com/tim-peterson/dwolla-php.git序列,在你的计算机某处克隆你的fork(即“复制/粘贴”它,在这种情况下:git clone->cd dwolla-php->git remote->git fetch)并与主repo同步(Dwolla / dwolla-php) 对您当地的仓库进行更改 键入上面的third_party TimPeterson$序列将您的更改推送到远程仓库,即您在Github上的分叉(tim-peterson / dwolla-php)
  • 第2部分:提出拉动请求:git add->git commit->git push 转到Github上的fork的网页(https://help.github.com/articles/using-pull-requests) 点击“拉取请求”按钮 给pull-request一个名字,填写你所做的更改的详细信息,点击提交按钮。 你完成了!!

68
投票

要发出拉取请求,您需要执行以下步骤:

  1. 分叉存储库(您要向其发送拉取请求)。只需单击存储库页面的fork按钮,您就会有一个单独的github存储库,其前面带有您的github用户名。
  2. 将存储库克隆到本地计算机。您在本地计算机上安装的Github软件可以为您执行此操作。单击存储库名称旁边的克隆按钮。
  3. 对文件进行本地更改/提交
  4. 同步更改
  5. 转到你的github分叉存储库,然后单击分支按钮旁边的“比较和查看”绿色按钮。 (按钮有图标 - 没有文字)
  6. 将打开一个新页面显示您的更改,然后单击拉取请求链接,该链接将请求发送给您分叉的存储库的原始所有者。

我花了一段时间才想到这一点,希望这会对某人有所帮助。


13
投票

我已经启动了一个项目来帮助人们制作他们的第一个GitHub拉取请求。你可以为https://github.com/tim-peterson/dwolla-php做实践教程

工作流程很简单

  • 在github分叉回购
  • 单击clone repo按钮获取克隆URL
  • 去终端并运行make your first PR here
  • 为你正在制作git clone <clone url you copied earlier>的变化做一个分支
  • 做出必要的改变
  • 提交您的更改git checkout -b branch-name
  • 在GitHub git commit上将您的更改推送到您的分支
  • 转到GitHub的分支,看看git push origin branch-name按钮
  • 单击它并提供必要的详细信息

12
投票

对于我们这些拥有github.com帐户但只在我们在命令行中输入“git”时收到一条令人讨厌的错误消息的人,这里是如何在浏览器中完成所有操作:)

  1. 与蒂姆和法尔汉一样:写下你自己的项目副本:Compare and pull request
  2. 几秒钟后,您将被重定向到您自己的项目分叉副本:Step 1: Fork
  3. 导航到需要更改的文件,然后单击工具栏中的“编辑此文件”:Step 2
  4. 编辑之后,写下几个描述更改的单词,然后写“提交更改”,同样也是主分支(因为这只是你自己的副本,而不是“主”项目)。 Step 3: Edit a file
  5. 对需要编辑的所有文件重复步骤3和4,然后返回到项目副本的根目录。在那里,单击绿色的“比较,查看...”按钮:Step 4: Commit changes
  6. 最后,在您仔细检查了您的请求的标题和说明后,再次单击“创建拉取请求”..然后再次“创建拉取请求”:Step 5: Start submit

3
投票

我按照蒂姆彼得森的指示,但我为我的更改创建了一个本地分支。然而,推后我没有在GitHub看到新的分支。解决方案是在push命令中添加-u:

enter image description here

1
投票

我写了一个bash程序,它完成了为你设置公关分支的所有工作。它根据需要执行分叉,与上游同步,设置上游远程等等,您只需提交修改,推送并提交PR。

以下是您运行它的方式:

git push -u origin <branch>

你会发现程序github-make-pr-branch ssh your-github-username orig_repo_user orig_repo_name new-feature 及其存储库还包括一个分步指南,如果你想了解它是如何工作的,手动执行相同的过程,以及有关如何使你的功能分支保持最新的额外信息与上游主数据和其他有用花絮的日期。

© www.soinside.com 2019 - 2024. All rights reserved.