如何做一个GitHub拉请求

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

138908 次浏览

为了学习如何做出拉请求,我只是跟随了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部分: fork someone's repo: https://help.github.com/articles/fork-a-repo

    1. 点击你想要贡献的回购上的'fork'按钮,在本例中:Dwolla的PHP repo (Dwolla/ dwala -php)
    2. 获取你新创建的fork的URL,在本例中:https://github.com/tim-peterson/dwolla-php.git (tim-peterson/ dwalla -php)
    3. 输入上面的git clone->cd dwolla-php->git remote->git fetch序列来克隆你的fork在你的计算机的某个地方(即,“复制/粘贴”它,在这种情况下:third_party TimPeterson$),并与主repo (Dwolla/ dwalla -php)同步。
    4. 对本地回购进行更改
    5. 输入上面的git add->git commit->git push序列,将你的更改推送到远程回购,即你在Github上的fork (tim-peterson/ dwola -php)
    6. 李< / ol > < / >
    7. 第2部分: make pull-request: https://help.github.com/articles/using-pull-requests

      1. 去Github上的你的叉子网页(https://github.com/tim-peterson/dwolla-php)
      2. 点击'pull-request'按钮
      3. 给pull-request一个名称,填写你所做的更改的详细信息,单击提交按钮。
      4. 你做完了! !
      5. 李< / ol > < / >

(除了正式的"GitHub帮助“使用拉请求”页面",
参见“GitHub中的分叉vs.分支"“在GitHub中,原点和上游的区别是什么") < / p >

关于pull-requests的几个技巧:

假设你有第一个分叉回购,下面是你应该在你拥有的那个fork中做的事情:

  • 创建一个分支:在分支中隔离你的修改。不要从master创建一个拉请求,在那里你可能会被诱惑一次性累积和混合几个的修改。
  • 重新建立分支的基础:即使你已经从那个分支做了一个拉请求,在origin/master的基础上重新建立它(确保你的补丁仍然有效)将自动更新拉请求(不需要点击任何东西)
  • 更新该分支:如果你的pull请求被拒绝,你可以添加新的提交,和/或完全重做你的历史记录:它会再次激活你现有的pull请求。
  • “focus"该分支:即使其主题“紧”,不修改成千上万的类和所有的应用程序,只添加或修复一个定义良好的功能,保持变化小
  • 删除该分支:一旦被接受,你可以安全地删除你的fork上的分支(和git remote prune origin)。GitHub GUI将建议您在拉取请求页面中删除分支。

注意:对于这个Pull-Request本身,请参见"如何编写完美的拉请求"(2015年1月,GitHub)


2016年3月:新的PR合并按钮选项:参见"Github挤压提交从网页界面拉请求后审查评论?"。

squash

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


Pull请求后

关于最后一点,自2013年4月10日起,&;__abc0 &;,为您删除分支:

new merge button

合并后删除分支也简化了。
我们不再使用额外的步骤确认删除,而是在您删除分支时立即删除它,并提供一个方便的链接,以便在您再次需要分支时恢复该分支

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


拉请求vs.请求拉


关于“仓库”的电子笔记;(原文如此)

<humour>

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

幸运的是,一个真正的商业新闻机构会知道,并且有E-note以替换' E-note ':

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

所以如果你的reposotory需要一个e-note…ask Fox Business。他们知道内情。

</humour>

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

git push -u origin <branch>

为了进行pull请求,您需要执行以下步骤:

  1. Fork一个存储库(您希望向其发出拉取请求)。只需单击存储库页面的叉按钮,你将有一个单独的github存储库之前与你的github用户名。
  2. 将存储库克隆到本地机器。你在本地机器上安装的Github软件可以帮你完成这个任务。单击存储库名称旁边的克隆按钮。
  3. 对文件进行本地更改/提交
  4. 同步更改
  5. 转到你的github分叉库,点击“比较&“审查”绿色按钮旁边的分支按钮。(按钮有图标-无文本)
  6. 一个新页面将打开,显示您的更改,然后单击拉请求链接,这将把请求发送给您派生的存储库的原始所有者。

我花了一段时间才弄明白,希望这能帮助到一些人。

对于我们这些拥有github.com帐户的人来说,当我们在命令行中输入“git”时,只会得到一个讨厌的错误消息,下面是如何在你的浏览器中完成这一切:)

    就像Tim和Farhan写的:Fork你自己的项目副本: 李步骤1:Fork < / > 几秒钟后,你将被重定向到你自己的项目的分叉副本: 李步骤2 < / >
  1. 导航到您需要更改的文件,并单击工具栏中的“编辑此文件”: 李步骤3:编辑一个文件 < / > 编辑完成后,写几句话描述更改,然后“提交更改”,同样也可以提交到主分支(因为这只是你自己的副本,而不是“主”项目)。 李步骤4:提交更改 . < / > 对你需要编辑的所有文件重复步骤3和4,然后回到项目的你的副本的根目录。在那里,点击绿色的“比较,审查…”按钮: 李步骤5:Start submit < / >
  2. 最后,点击“Create pull request”..然后“Create pull request”再一次,在你仔细检查你的请求的标题和描述之后: 李enter image description here < / >

我已经启动了一个项目来帮助人们进行他们的第一个GitHub拉请求。你可以做在这里进行你的第一次公关的实践教程

工作流程简单如

  • Fork的回购在github
  • 通过点击克隆回购按钮获得克隆url
  • 进入终端并运行git clone <clone url you copied earlier>
  • 为你正在做的改变git checkout -b branch-name创建一个分支
  • 做出必要的改变
  • 提交你的更改git commit
  • 在GitHub git push origin branch-name上将您的更改推到您的fork
  • 去你的GitHub上的分叉看到Compare and pull request按钮
  • 点击它并给出必要的细节

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

下面是你如何运行它:

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

你会发现在这里程序和它的存储库还包括手动执行相同过程的分步指南,如果你想了解它是如何工作的,还有关于如何保持你的功能分支与上游主程序和其他有用的花絮更新的额外信息。

最简单的GitHub拉请求是不使用git的从web界面

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

    .

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

  3. 如果你正在阅读这篇文章,你将没有对存储库(项目文件夹)的写访问权,所以GitHub将在你的帐户中创建一个存储库的副本(实际上是一个分支)。点击Create pull request按钮。

  4. 给Pull Request一个描述并添加任何注释,然后单击创建拉请求按钮。