如何做GitHub拉取请求

tim*_*son 279 git github pull-request git-fork

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

Von*_*onC 233

(除了官方的" GitHub帮助'使用拉取请求'页面 "之外,
另请参阅" GitHub中的分叉与分支 "," GitHub中的起源与上游有什么区别 ")

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

假设你先分叉了一个仓库,那么你应该在你拥有的那个分支中做什么:

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

注意:要编写 Pull-Request本身,请参阅" 如何编写完美的pull请求 "(2015年1月,GitHub)


2016年3月:新的PR合并按钮选项:在审核评论后,请参阅" Github squash在拉取请求中从Web界面提交? ".

壁球

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


在拉取请求之后

关于最后一点,自2013年4月10日起," 重新设计的合并按钮 ",该分支将被删除:

新的合并按钮

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

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


拉请求与请求拉


电子票据"reposotory"(原文如此)

<humour>

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

幸运的是,一个真正的商业新闻机构会知道,并且有一个电子笔记,以便用"电子笔记"取代拉动替换:

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

所以,如果你的回购Ø保守党需要一个电子笔记... 问问福克斯商业.他们知道.

</humour>

  • 我不理解变基的部分.那是做什么的?([本页](http://git-scm.com/docs/git-rebase)听起来像火箭科学,但我相信它不是).那个时候你会发出什么命令"重新"? (4认同)
  • -@ VonC对此表示感谢。您介意提供一些代码来指出您所说的与我所说的有何不同吗?对于将我/ Github的答案从理论上的解决方案变为人们实际使用的东西,“分支”与“主”决定似乎是至关重要的决定。 (2认同)

tim*_*son 198

为了学习如何发出拉取请求,我只是在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
Run Code Online (Sandbox Code Playgroud)

  • - @ alexgray,我留下了bash提示,例如,"Tims-MacBook-Pro:third_party TimPeterson $",因为这是一个初学者的教程,这些提示有助于指导用户. (4认同)

Far*_*han 69

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

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

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

  • 我不清楚你需要在能够提出拉动请求之前分叉回购.我认为推送提交只会转到某种具有公共写入权限的挂起分支,然后从那里合并.谢谢! (3认同)

Sph*_*xxx 14

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

  1. 与Tim和Farhan一样:写下你自己的项目副本: 第1步:叉
  2. 几秒钟后,您将被重定向到您自己的项目分叉副本: 第2步
  3. 导航到需要更改的文件,然后单击工具栏中的"编辑此文件": 第3步:编辑文件
  4. 编辑完成后,写下几个描述更改的单词,然后写"提交更改",同样也是主分支(因为这只是你自己的副本,而不是"主"项目). 第4步:提交更改
  5. 对需要编辑的所有文件重复步骤3和4,然后返回到项目副本的根目录.在那里,单击绿色"比较,查看..."按钮: 第5步:开始提交
  6. 最后,在您仔细检查了请求的标题和说明后,再次单击"创建拉取请求"..然后再次 "创建拉取请求" : 在此输入图像描述


sud*_*ang 14

我已经启动了一个项目来帮助人们制作他们的第一个GitHub拉取请求.你可以通过动手教程在这里制作你的第一个PR

工作流程很简单

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