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


当前回答

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

工作流程简单如

Fork的回购在github 通过点击克隆回购按钮获得克隆url 打开终端,运行git clone <clone url你之前复制的> 为你所做的更改创建一个分支git checkout -b branch-name 做出必要的改变 git Commit提交你的更改 在GitHub上将你的更改推送到你的fork上git Push origin branch-name 去你的GitHub上的分叉看到一个比较和拉请求按钮 点击它并给出必要的细节

其他回答

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

Same as Tim and Farhan wrote: Fork your own copy of the project: After a few seconds, you'll be redirected to your own forked copy of the project: Navigate to the file(s) you need to change and click "Edit this file" in the toolbar: After editing, write a few words describing the changes and then "Commit changes", just as well to the master branch (since this is only your own copy and not the "main" project). Repeat steps 3 and 4 for all files you need to edit, and then go back to the root of your copy of the project. There, click the green "Compare, review..." button: Finally, click "Create pull request" ..and then "Create pull request" again after you've double-checked your request's heading and description:

(除了官方的“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上的两个独立的帮助页面(下面链接为项目符号)。下面的命令行命令用于第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

Part 1: fork someone's repo: https://help.github.com/articles/fork-a-repo click the 'fork' button on the repo you want to contribute to, in this case: Dwolla's PHP repo (Dwolla/dwolla-php) get the URL for your newly created fork, in this case: https://github.com/tim-peterson/dwolla-php.git (tim-peterson/dwolla-php) type the git clone->cd dwolla-php->git remote->git fetch sequence above to clone your fork somewhere in your computer (i.e., "copy/paste" it to, in this case: third_party TimPeterson$) and sync it with the master repo (Dwolla/dwolla-php) make your changes to your local repo type the git add->git commit->git push sequence above to push your changes to the remote repo, i.e., your fork on Github (tim-peterson/dwolla-php) Part 2: make pull-request: https://help.github.com/articles/using-pull-requests go to your fork's webpage on Github (https://github.com/tim-peterson/dwolla-php) click 'pull-request' button give pull-request a name, fill in details of what changes you made, click submit button. you're done!!

我写了一个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>