如何从克隆的仓库中提交拉取请求?


79

如何从现有的本地克隆仓库中提交拉取请求?

通常,我想查看一些来自github的库源代码,因此我将其克隆。后来,我发现了代码的一些问题,并经常将其放在邮件列表中。图书馆作者说:“很好,可以发送拉取请求吗?”。

答案是“不是那么容易”。我还没有分叉这个仓库,我已经克隆了它。而且似乎没有办法找到从克隆存储库提交拉取请求的方法?

如果这个限制是正确的,那么感觉就像是明智的反应是分叉您所看的任何东西,以便如果您想贡献,就可以。这样,您的github帐户就会充满许多不活动的派生。

关于这个问题的讨论似乎并不多-我是这个问题影响的唯一人吗?


4
:由于注意到这一点非常类似的问题stackoverflow.com/questions/4209208/...
本记

Answers:


55

在GitHub上分叉存储库,然后将您的fork存储库添加为本地克隆副本的远程存储:

git remote add myfork https://github.com/<myGitHubAccountName>/<repoName>.git

然后,您可以推叉:

git push myfork master

如果您不仅要执行一个请求请求,还可以删除origin遥控器并将叉子命名为原始服务器:

git remote rm origin
git remote add origin https://github.com/<myGitHubAccountName>/<repoName>.git

这通常是我要做的。有时,我添加原始原点,upstream因此仍然可以参考它。


5
您如何不分叉地做到这一点?
亚伦·霍尔

2
如果您具有对存储库的推送访问权限,则可以在该存储库的分支之间打开拉取请求。您需要将本地分支推到新的分支名称上origin,例如git push origin HEAD:my-feature。然后,您可以使用网络UI打开从my-feature到的拉取请求master
bobthecow 2015年

9
@Torek-另一个搞砸了的工作流程。难道真的这很难执行一个简单的动作?我认为这是git的主要目标之一-在分散的模型中简化协作和补丁共享。由于它的基本工作流程,因此不需要火箭科学家来推断目标应该是容易实现的。那些人需要聘用UX专家,因为他们都缺乏常识,无法自行解决。
jww

10

如果您可以在路径中安装另一个二进制文件,则github发布了一个名为的漂亮小工具hub

如果您已经克隆了别人的仓库:

$ hub fork  # This creates a fork and adds your repo as a remote

$ git push YOUR_USER feature  # push the changes to your new remote

$ hub pull-request  # will open your browser

感谢您分享有关Hub的信息,我很喜欢:)我正处于这种情况下,而Hub使其对我来说如此方便。
Wahib Ul Haq

需要特别注意的是,“ hub fork”仍然会在GitHub上为您的帐户创建叉式仓库。
格兰杰

0

我也总是克隆而不是fork,以下步骤对我有用:

  1. 在克隆的存储库上创建一个新分支,然后进行新更改。
  2. 按如下所示将更改推送到您的分支:

    git push origin insert_your_working_branch_name

  3. 现在您应该能够在github master的pull request中找到您的工作分支。


2
我不知道上面的第2步如何工作,如果您克隆了某人的仓库,那么您没有发布权吗?
Ben Hutchison
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.