如何创建对GitHub的拉取请求?

时间:2020-10-16 18:52:16

标签: git github

我想向只有读取权限的外国项目发送推送请求,然后打开一个问题。

我遵循了一些教程,但是总是收到错误消息,指出我没有写权限。首先,我使用适用于Windows的GitHub Desktop进行了尝试,但没有成功;现在我可以直接在Linux shell中尝试它。

这是我所做的:

  1. git clone https://github.com/matthiasmullie/minify.git
  2. (然后我更改要更改的文件)
  3. git checkout -b new_branch
  4. git远程添加上游https://github.com/matthiasmullie/minify
  5. git config user.email“我的电子邮件地址”
  6. git config user.name“我的名字”
  7. git commit -S -m“在这里,我解释我的更改”
  8. git push -u origin new_branch
  9. (现在我输入我的GitHub登录凭据)

然后我收到此错误消息:

远程:对matthiasmullie / minify.git的许可被拒绝 丹尼尔·马绍尔。致命:无法访问 'https://github.com/matthiasmullie/minify.git/':请求的网址 返回错误:403

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我将假设存储库https://github.com/matthiasmullie/minify.git是您要向其中发送拉取请求的存储库。如您在问题中提到的,这将是upstream存储库。

您没有对upstream的写权限。除非您是该项目的非常紧密的合作者,否则存储库的所有者将不会授予您对该项目的写入权限。那么,我们如何解决这个问题呢?您想为回购做贡献,但不能继续下去!

解决方案是在遵循答案中描述的所有步骤之前,创建该存储库的副本 。该副本称为forkfork是属于您的存储库的副本。它在您的GitHub帐户中,因此您具有该副本的完整管理员权限。

因此,第一步将转到Matthias Mullie(https://github.com/matthiasmullie/minify.git)拥有的存储库,并寻找创建fork的按钮(它位于屏幕的右上角)一般)。单击该按钮并等待一段时间后,您将拥有一个属于您的存储库。URL或新存储库将为https://github.com/[your-github-username]/minify,请仔细查看fork的URL,它将包含您的GitHub用户名而不是Mathias的。

现在,您按照上面提到的步骤进行操作,但是使用fork作为遥控器:

最后一次推送后,您可以登录github.com,您应该能够从那里创建请求请求。

请注意,我用于遥控器的名称是origin,而不是upstream。约定如下:

  • origin的远程用户是我的fork,我有权写该远程用户。
  • upstream远程是我无法推送到的原始存储库。

如上所述,这是一个约定,因此您可以找到其他方法来定义upstreamorigin