如何做一个GitHub拉请求
如何创build和/或发送拉请求到GitHub上托pipe的另一个存储库?
(除了官方的“ GitHub帮助”使用pull请求页面 “,
另请参见“ GitHub中的分叉与分支 ”,“ GitHub中的 起源与上游之间的区别 ”)
夫妇提示拉请求:
假设你首先分叉了一个回购 ,那么你应该在你所拥有的那个分叉中做什么:
- 创build一个分支 :隔离你的修改分支。 不要从
master
那里创build一个拉取请求,在那里你可能会试图积累和一次混合几个修改。 - 重新分支 :即使你已经从该分支做了一个pull请求,在
origin/master
(确保你的补丁还在工作)上重新绑定它,会自动更新pull请求(不需要点击任何东西) - 更新该分支 :如果您的请求被拒绝,您只需添加新的提交和/或完全重做您的历史logging:它将再次激活您的现有请求。
- “关注”这个分支 :即使其主题“紧”,不要修改成千上万个类和所有的应用程序,只添加或修复一个明确定义的function, 保持变化很小 。
- 删除那个分支 :一旦被接受,你可以安全地删除你的分支上的那个分支(和
git remote prune origin
)。 GitHub的graphics用户界面会build议你在你的拉取请求页面中删除你的分支。
注意:要编写 Pull-Request本身,请参阅“ 如何编写完美的请求 ”(2015年1月,GitHub)
2016年3月:新的公关合并button选项:请参阅“ Github的压缩提交请求后从网页界面提交请求评论? ”。
回购的维护者可以select合并 – 取得这些PR提交。
合并请求后
关于最后一点,从2013年4月10日起,“ 重新devise合并button ”,分支会被删除:
合并后删除分支也被简化了。
除了用额外的步骤确认删除,我们立即删除分支时,删除它,并提供一个方便的链接,以恢复分支在你需要的事件再次 。
这证实了在合并拉取请求之后删除分支的最佳实践。
拉请求与请求拉
-
拉请求不是官方的“混帐”条款。
Git使用request-pull
(!)命令构build一个合并请求:
它“总结了两次提交到标准输出的变化,并在生成的摘要中包含给定的URL。”
Github 从第一天(2008年2月)开始发布自己的版本,但在2010年5月重新devise了该function ,指出:Pull Request = Compare View + Issues + Commit comments
电子备注“reposotory”(原文如此)
<humour>
那(pull request)甚至没有被GitHub正确定义!
幸运的是,一个真正的商业新闻机构会知道,并且有一个电子笔记,以取代“电子笔记”的取代 :
所以,如果你的回购需要一个电子笔记… 问福克斯商业 。 他们是知道的。
</humour>
要了解如何提出拉取请求,我只需在Github上跟随两个单独的帮助页面(以下链接为bullet点)。 以下命令行命令用于第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
- 点击你想贡献的repo上的'fork'button,在这种情况下: Dwolla的PHP repo (Dwolla / dwolla-php)
- 获取新创build的分支的URL,在这种情况下: https : //github.com/tim-peterson/dwolla-php.git (tim-peterson / dwolla-php)
- 键入
git clone->cd dwolla-php->git remote->git fetch
序列克隆你的电脑在你的计算机的某个地方(即“复制/粘贴”到这种情况下:third_party TimPeterson$
)并同步它与主回购(Dwolla / dwolla-php) - 对您当地的回购进行更改
- 键入上面的
git add->git commit->git push
sequence将你的改变推送到远程的repo,也就是你在Github上的fork(tim-peterson / dwolla-php)
-
第2部分 :提出请求: https : //help.github.com/articles/using-pull-requests
- 去Github上你的fork的网页( https://github.com/tim-peterson/dwolla-php )
- 点击“拉请求”button
- 给拉请求一个名字,填写你做了什么更改的详细信息,点击提交button。
- 你完成了!!
为了提出拉取请求,您需要执行以下步骤:
- 分叉一个仓库(你想要提出一个请求)。 只需点击仓库页面上的forkbutton,你将有一个单独的github仓库,前面有你的github用户名。
- 将存储库克隆到本地计算机。 您安装在本地机器上的Github软件可以为您做到这一点。 单击存储库名称旁边的克隆button。
- 对文件进行本地更改/提交
- 同步更改
- 去你的github分叉存储库,并点击分支button旁边的“比较和审查”绿色button。 (button有图标 – 没有文字)
- 一个新的页面将打开显示您的更改,然后单击拉请求链接,将请求发送到您分叉的存储库的原始所有者。
我花了一段时间才想到这一点,希望这会帮助别人。
对于我们这些拥有github.com账户的人,当我们在命令行中input“git”时,只会得到一个令人讨厌的错误消息,下面是如何在浏览器中完成这一切的:)
- 同Tim一样,Farhan写道:把自己的项目拷贝到:
- 几秒钟后,您将被redirect到您自己的项目副本:
- 导航到您需要更改的文件,然后单击工具栏中的“编辑此文件”:
- 编辑完成后,写一些描述变化的单词,然后写下“提交变更”,就像主分支一样(因为这只是你自己的副本而不是“主”项目)。
- 对需要编辑的所有文件重复步骤3和4,然后返回到项目副本的根目录。 在那里,点击绿色的“比较,审查…”button:
- 最后,点击“Create pull request”,然后再次检查您的请求的标题和说明,然后再次 “Create pull request”
我已经开始了一个项目来帮助人们做出第一个GitHub拉取请求。 你可以做动手教程, 在这里做你的第一个公关
工作stream程很简单
- 叉在github回购
- 点击克隆回购button获取克隆url
- 转到terminal并运行
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
button - 点击它,并提供必要的细节
我遵循蒂姆彼得森的指示,但我为我的更改创build了一个本地分支。 然而,推后,我没有看到GitHub中的新分支。 解决方法是在push命令中添加-u:
git push -u origin <branch>