在GitHub共享仓库中管理拉取请求的工作流程

5
我正在尝试管理一个不属于我但我拥有管理员权限的存储库上的拉取请求。当我试图从另一个分叉中拉取更改时,它会失败并显示一个不太清晰的错误。以下是我的工作流程:
  1. 分叉主存储库
  2. 在该分叉中进行更改
  3. 提交到该分叉
    3.5(转到步骤2)
  4. 向主存储库提交拉取请求
作为主存储库的管理员,我尝试按以下方式合并这些更改:
  1. git clone git@github.com:dude/project.git
  2. git checkout -b gtracy-master master
  3. git pull http://gtracy@github.com/gtracy/project.git master
输入密码后,我收到以下错误消息:
error: The requested URL returned error: 401 while accessing 
http://gtracy@github.com/gtracy/project.git/ifno/refs

这个工作流程有问题吗?有没有更简单的方法来管理我自己的拉取请求?谢谢!
1个回答

7
GitHub "pull request" 帮助页面没有提到,但在提交任何拉取请求之前,我更喜欢将我的 fork 中完成的工作与原始仓库的分支合并。
也就是说,我会添加原始仓库作为远程仓库,获取最终应用于我的拉取请求的分支,并首先在本地(在我的 fork 中)将我的工作与该分支合并。
这样,我可以确保所有我的拉取请求都是快进的。
不过,在您的情况下,如果您知道自从您 fork 并在本地仓库中工作以来原始仓库没有发布更改,则可能不适用此方法。
对于您的第二部分,我会遵循“合并拉取请求”部分,并将您的 forked 仓库添加为原始仓库克隆的远程仓库。
话虽如此,在GitHub Smart HTTP 页面中提到了错误 401 “未经授权”:

别忘了 https 部分 - Git 将会以哈希但未加密的方式通过网络发送您的密码,因此请务必使用 SSL。
在 Git 的未来版本中(假设我们的补丁被集成),如果客户端收到 401,Git 将提示您输入用户名,因此您实际上不需要将用户名放在 URL 中 - 它只会在 Git 需要时询问您。

因此,如果您想在地址中使用用户名,请尝试使用 https。
或者尝试使用 http://github.com/gtracy/project.git(公共仓库地址)。

看起来我的git安装可能出了问题。我无法使https工作 - "错误设置证书验证位置" - 我正在尝试使用'git config'来设置'http.sslcainfo',但目前还没有成功。 - Greg
我尝试了以下配置... 'git config --system http.sslcainfo \bin/curl-ca-bundle.crt',现在 'git pull https : //gtracy@github.com/gtracy/project.git master' 再次产生相同的 401 错误?! - Greg
@Greg:奇怪(你的账户/密码与该仓库有关吗?)还是使用了带有http的公共地址? - VonC
我从未能够通过https使其正常工作。但是,我可以成功地使用'git@github:gtracy/project.git'拉取。我在某处误解了Github的魔力...但现在是时候继续前进了。 - Greg
@Greg:好的,但是pull和push有两个不同的要求。你需要一种服务器来监听push。https用于push意味着智能http。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接