如何做GitHub拉取请求

时间:2013-02-04 05:10:26

标签: git github pull-request git-fork

如何创建和/或向GitHub上托管的其他存储库发送拉取请求?

8 个答案:

答案 0 :(得分:228)

(除了官方的“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创建拉取请求,您可能会想要一次累积并混合几个修改。
  • 重新分支该分支:即使您已经从该分支执行了拉取请求,在origin/master之上重新定位它(确保您的补丁仍然有效)将更新拉取请求自动(不需要点击任何东西)
  • 更新该分支:如果您的请求被拒绝,您只需添加新的提交,和/或完全重做您的历史记录:它将再次激活您现有的提取请求。
  • “关注”该分支:即,使其主题“紧”,不要修改数千个类和所有应用,只添加或修复明确定义的功能,保持变化小
  • 删除该分支:一旦接受,您就可以安全地删除分支上的那个分支(和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

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


拉取请求后

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

new merge button

  

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

确认合并拉取请求后删除分支的最佳做法。


pull-request vs. request-pull


电子笔记“reposotory”(原文如此)

<humour>

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

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

https://pbs.twimg.com/media/BT_5S-TCcAA-EF2.jpg:large

因此,如果您的回购 o 保守需要电子记录...... ask Fox Business 。他们是知情人。

</humour>

答案 1 :(得分:196)

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

$ 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
  • 第1部分:分叉某人的回购:https://help.github.com/articles/fork-a-repo

    1. 点击您要贡献的仓库上的'fork'按钮,在这种情况下:Dwolla's PHP repo(Dwolla / dwolla-php)
    2. 获取新创建的fork的URL,在这种情况下:https://github.com/tim-peterson/dwolla-php.git(tim-peterson / dwolla-php)
    3. 键入上面的git clone->cd dwolla-php->git remote->git fetch序列,在您的计算机某处克隆您的前叉(即“复制/粘贴”它,在本例中为third_party TimPeterson$)并将其与主仓库同步(Dwolla / dwolla-PHP)
    4. 对您的本地回购进行更改
    5. 键入上面的git add->git commit->git push序列以将您的更改推送到远程仓库,即您在Github上的分叉(tim-peterson / dwolla-php)
  • 第2部分:制作拉取请求:https://help.github.com/articles/using-pull-requests

    1. 转到Github上的你的fork 网页(https://github.com/tim-peterson/dwolla-php
    2. 点击“拉取请求”按钮
    3. 为pull-request提供一个名称,填写您所做的更改的详细信息,单击“提交”按钮。
    4. 你已经完成了!!

答案 2 :(得分:68)

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

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

答案 3 :(得分:13)

我已经启动了一个项目来帮助人们制作他们的第一个GitHub拉取请求。您可以参加make your first PR here

的动手教程

工作流程很简单

  • 在github中分享回购
  • 点击克隆存储按钮
  • 获取克隆网址
  • 转到终端并运行git clone <clone url you copied earlier>
  • 为您正在进行的更改git checkout -b branch-name
  • 创建分支
  • 进行必要的更改
  • 提交您的更改git commit
  • 在GitHub git push origin branch-name
  • 上推送您的更改
  • 转到GitHub上的分支,查看Compare and pull request按钮
  • 点击它并提供必要的详细信息

答案 4 :(得分:11)

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

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

答案 5 :(得分:3)

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

git push -u origin <branch>

答案 6 :(得分:1)

我编写了一个bash程序,该程序可以为您建立PR分支的所有工作。它会在需要时执行派生,与上游同步,设置上游远程设备等,您只需要提交您的修改,推送并提交PR。

运行方式如下:

github-make-pr-branch ssh your-github-username orig_repo_user orig_repo_name new-feature

您会找到程序here,并且它的存储库还包含逐步指南,如果您想了解它是如何工作的,请手动执行相同的过程,以及有关如何保存的更多信息。您的功能部件将使用上游主设备和其他有用的花絮进行最新的分支。

答案 7 :(得分:0)

最简单的GitHub Pull Request 是从Web界面 ,而不使用git。

  1. 注册GitHub帐户,登录,然后转到要更改的存储库中的页面。
  2. 点击铅笔图标

    在位置附近搜索文字,进行所需的任何编辑,然后预览以确认。为建议的更改提供最多50个字符的描述以及可选的扩展描述,然后单击建议更改文件按钮。

  3. 如果您正在阅读本文,那么您将无权访问存储库(项目文件夹),因此GitHub将在您的帐户中创建存储库的副本(实际上是分支)。点击创建请求请求按钮。

  4. 提供请求请求的描述并添加任何评论,然后单击创建请求请求按钮。