我如何创建和/或发送一个拉请求到另一个存储库托管在GitHub?
当前回答
我写了一个bash程序,它为您完成了所有建立公关分支的工作。如果需要,它会执行分叉,与上游同步,设置上游远程等,你只需要提交你的修改,推送和提交PR。
下面是你如何运行它:
github-make-pr-branch ssh your-github-username orig_repo_user orig_repo_name new-feature
你可以在这里找到这个程序,如果你想了解它是如何工作的,它的存储库还包括手动执行相同过程的逐步指南,以及关于如何使用上游主程序和其他有用的花絮来保持你的特性分支的最新信息。
其他回答
我遵循蒂姆·彼得森的指示,但我为我的更改创建了一个本地分支。然而,在推动后,我没有看到在GitHub的新分支。解决方案是在push命令中添加-u:
git push -u origin <branch>
我已经启动了一个项目来帮助人们进行他们的第一个GitHub拉请求。你可以在这里通过实践教程来制作你的第一个PR
工作流程简单如
Fork的回购在github 通过点击克隆回购按钮获得克隆url 打开终端,运行git clone <clone url你之前复制的> 为你所做的更改创建一个分支git checkout -b branch-name 做出必要的改变 git Commit提交你的更改 在GitHub上将你的更改推送到你的fork上git Push origin branch-name 去你的GitHub上的分叉看到一个比较和拉请求按钮 点击它并给出必要的细节
为了进行pull请求,您需要执行以下步骤:
Fork a repository (to which you want to make a pull request). Just click the fork button the the repository page and you will have a separate github repository preceded with your github username. Clone the repository to your local machine. The Github software that you installed on your local machine can do this for you. Click the clone button beside the repository name. Make local changes/commits to the files sync the changes go to your github forked repository and click the "Compare & Review" green button besides the branch button. (The button has icon - no text) A new page will open showing your changes and then click the pull request link, that will send the request to the original owner of the repository you forked.
我花了一段时间才弄明白,希望这能帮助到一些人。
(除了官方的“GitHub帮助'使用拉请求'页面”外, 参见“GitHub中的分叉vs.分支”,“GitHub中的起源和上游之间的区别是什么”)
关于pull-requests的几个技巧:
假设你第一次fork了一个回购,下面是你应该在你拥有的fork中做的事情:
create a branch: isolate your modifications in a branch. Don't create a pull request from master, where you could be tempted to accumulate and mix several modifications at once. rebase that branch: even if you already did a pull request from that branch, rebasing it on top of origin/master (making sure your patch is still working) will update the pull request automagically (no need to click on anything) update that branch: if your pull request is rejected, you simply can add new commits, and/or redo your history completely: it will activate your existing pull request again. "focus" that branch: i.e., make its topic "tight", don't modify thousands of class and the all app, only add or fix a well-defined feature, keeping the changes small. delete that branch: once accepted, you can safely delete that branch on your fork (and git remote prune origin). The GitHub GUI will propose for you to delete your branch in your pull-request page.
注意:要编写pull - request本身,请参见“如何编写完美的pull request”(2015年1月,GitHub)
2016年3月:新的PR合并按钮选项:参见“Github在审查评论后的拉请求上从web界面压缩提交?”
回购的维护者可以选择合并——压缩那些PR提交。
Pull请求后
关于最后一点,从2013年4月10日起,“重新设计的合并按钮”,为您删除分支:
合并后删除分支也被简化了。 我们不再使用额外的步骤确认删除,而是在您删除分支时立即删除它,并提供一个方便的链接,以便在您再次需要它时恢复该分支。
这证实了在合并拉取请求后删除分支的最佳实践。
拉请求vs.请求拉
Pull request不是一个官方的“git”术语。 Git使用request-pull(!)命令构建一个合并请求: 它“总结两次提交到标准输出之间的更改,并在生成的摘要中包含给定的URL。” Github在第一天(2008年2月)推出了自己的版本,但在2010年5月重新设计了该功能,并声明: Pull Request =比较视图+问题+提交注释
“资料库”电子注释(原文如此)
<humour>
这(拉请求)甚至没有被GitHub正确定义!
幸运的是,一个真正的商业新闻机构会知道,并且有一个e-note来取代“e-note”:
所以如果你的存储库需要一个电子笔记…问问福克斯商业频道吧。他们知道内情。
</humour>
最简单的GitHub Pull Request来自web界面,不使用git。
Register a GitHub account, login then go to the page in the repository you want to change. Click the pencil icon, search for text near the location, make any edits you want then preview them to confirm. Give the proposed change a description up to 50 characters and optionally an extended description then click the Propose file Change button. If you're reading this you won't have write access to the repository (project folders) so GitHub will create a copy of the repository (actually a branch) in your account. Click the Create pull request button. Give the Pull Request a description and add any comments then click Create pull request button.
推荐文章
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- 如何修复Github页面上的HTTP 404 ?
- 如何显示数学方程在一般github的markdown(不是github的博客)
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到