git - 如何创建到 GitHub 的拉取请求?
问题描述
我想向我只有读取权限的外国项目发送推送请求,并打开一个问题。
我遵循了几个教程,但我总是收到我没有写权限的错误消息。首先,我使用 GitHub Desktop for Windows 进行了尝试,但没有成功;现在我直接在 Linux shell 中尝试一下。
这是我所做的:
- git 克隆https://github.com/matthiasmullie/minify.git
- (然后我更改我要更改的文件)
- git checkout -b new_branch
- git 远程添加上游https://github.com/matthiasmullie/minify
- git config user.email "我的电子邮件地址"
- git config user.name "我的名字"
- git commit -S -m "这里我解释一下我的改变"
- git push -u origin new_branch
- (现在我输入我的 GitHub 登录凭据)
然后我收到此错误消息:
远程:对 danielmarschall 的 matthiasmullie/minify.git 权限被拒绝。致命:无法访问“https://github.com/matthiasmullie/minify.git/”:请求的 URL 返回错误:403
我究竟做错了什么?
解决方案
我将假设存储库https://github.com/matthiasmullie/minify.git是您要向其发送拉取请求的存储库。正如您在问题中提到的,这将是upstream
存储库。
您没有对upstream
. 除非您是该项目的密切合作者,否则存储库的所有者不会授予您对它的写入权限。那么,我们如何解决这个问题呢?你想为回购做出贡献,但你不能推动它!
解决方案是在执行您在答案中描述的所有步骤之前创建该存储库的副本。该副本称为fork
. Afork
是属于您的存储库的副本。它在您的 GitHub 帐户中,因此您对该副本拥有完全的管理员权限。
因此,第一步是转到 Matthias Mullie 拥有的存储库 ( https://github.com/matthiasmullie/minify.git ) 并查找创建按钮fork
(它位于屏幕的右上角一般)。单击该按钮并等待一段时间后,您将拥有一个属于您的存储库 url 或该新存储库将是https://github.com/[your-github-username]/minify仔细查看分叉的 URL,它将包含您的 GitHub 用户名,而不是 Mathias 的用户名。
现在,您按照上面提到的步骤操作,但使用您fork
的遥控器:
- git clone https://github.com/[your-github-username]/minify
- (然后我更改我要更改的文件)
- git checkout -b new_branch
- git 远程添加源https://github.com/[your-github-username]/minify
- git config user.email "我的电子邮件地址"
- git config user.name "我的名字"
- git commit -S -m "这里我解释一下我的改变"
- git push -u origin new_branch
- (现在我输入我的 GitHub 登录凭据)
在最后一次推送之后,您可以登录到 github.com,您应该能够从那里创建拉取请求。
请注意,我用于遥控器的名称是origin
,而不是upstream
。约定如下:
origin
remote 是我fork
的,我有权写入的那个。upstream
remote 是原始存储库,我无法推送。
正如我上面提到的,这是一个约定,因此您可以找到其他方法来定义upstream
和origin
推荐阅读
- python - 数据框转换后保留标题
- db2 - DB2 luw 性能问题
- c# - PowerShell cmdlet 在运行时找不到 NuGet 程序集
- javascript - 我在文本区域输入的 json 中有一个多行字符串
- regex - 谷歌分析目标转换漏斗的正则表达式
- css - 只修复右侧一行的一个元素,其他的应该滚动
- node.js - 在节点/快递中包含页眉/页脚的更好方法?
- java - 无法通过将 selenium 与 Java 一起使用来单击动态更改的 div
- mysql - 在两个 sql 字段中测试等效性的最佳方法
- ios - Frirebase RT 数据库删除使用自动 ID 创建的子代