我的bash脚本无法使用cUrl分叉GitHub仓库。 creating a fork的gitHub API文档。
我尝试了很多变化:
curl -u $my_user_name https://api.github.com/repos/forks -d "{\"owner\":\"$upstream_repo_username\",\"repo\":\"$upstream_repo_name\"}"
和
curl -u $my_user_name https://api.github.com/repos/'$upstream_repo_username'/'$upstream_repo_name'/forks
产生以下错误:
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/v3"
}
在Contrast中,以下内容按预期创建一个新的空github存储库:
curl -u $my_user_name https://api.github.com/user/repos -d "{\"name\":\"$upstream_repo_name\"}"
有关如何从命令行创建repo分支的任何想法?
我有一个bash脚本: - 在github上创建一个空的repo,其中包含我将要克隆的repo的名称, - 在本地克隆来自另一个用户的repo,并 - 将我的克隆repo推送到我在我创建的空repo中github帐户 - 适当地设置原点和上游遥控器
但是,此方法不会在GitHub中保持与源(分叉)存储库的连接。我特别喜欢在我自己的回购名称下面出现的分叉链接的便利性;-)
目标是从命令行执行所有克隆(和分叉)。
我不想打开浏览器,导航到我希望分叉的存储库,只是为了访问“Fork”按钮..只返回命令行来完成该过程。
或者,我可以从命令行将克隆的repo变成分叉的repo吗? (即一些命令行api命令会重新创建fork拥有的那些内部github链接?)
这是我的工作bash脚本:
curl -u $my_user_name https://api.github.com/repos/$upstream_repo_username/$upstream_repo_name/forks -d ''
使用硬编码字符串而不是bash变量的示例:
curl -u 'SherylHohman' https://api.github.com/repos/octocat/Hello-World/forks -d ''
请注意,我将-d ''
移至最后以避免登录错误。
该请求需要身份验证。
我通过curl的-u
参数提供这个(而不是使用OAuth2)。
当我使用-u $my_user_name
选项时,
我不得不将-d ''
移到URI之后
- 如果放在-u 'username'
和URI之间,则会导致登录错误。
事实证明,我的脚本中的主要错误来源是bash-syntax。 我有关于bash变量的引号,应该不存在。 (..只是在不知道bash或curl的情况下解决痛点)
另外,正如#YuriSchimke所指出的,这个特殊的URI需要在URI中传递参数。将这些选项作为json传递不是一个选项,与创建新的空白回购的URI不同。
这就是为什么我对如何在URI中发送这些数据感到困惑的原因:
使用curl,default request is a GET。
在curl, POST requests是通过添加-d
(相当于--data
)标志,然后是要发送的数据。
我需要发送一个POST请求。 GitHub API的格式是GET(和POST例如.CreateRepo)请求有时可以send some parameters as json or query strings 注意:GitHub API的文档似乎略微不完整,因为我没有看到任何提及允许json的API,只有查询字符串。 我想在这种情况下,数据夹在两个静态URI部分之间,因此无法作为json值发送。
我不知道如何使用没有数据的-d
标志:
如果我只是将其关闭,则API调用将作为GET处理。 它返回了我想要的回购信息, 而不是将回购分配给我的帐户。
@YuriSchimke's post给了我“Ahaa!”。谢谢!我笑着说它并没有让我想到。我很感激Yuri的这么明显! (再次感谢)。
该文档显示所有者和repo是请求URI的一部分
curl -d '' https://api.github.com/repos/octocat/Hello-World/forks
https://developer.github.com/v3/repos/forks/
这似乎工作正常。
使用hub命令行工具创建或分叉repo要容易得多。
安装说明:https://github.com/github/hub#installation
它可以做更多,但这里是如何使用命令行分叉在线仓库。 但是,有相互矛盾的信息,所以可能有点混乱。
分叉其他人拥有的在线仓库:
git clone
克隆回购git clone ssh://[email protected]/keras-users/keras.git
cd keras
hub fork
分叉已经托管在github上的自己的repo:
Github不允许你分叉你自己的回购, 因此,您需要首先在计算机上创建自己的repo克隆, 然后,您可以在github网站上创建克隆的回购
git clone ssh://[email protected]/alpha_beta_gamma/clone_repo.git
git clone clone_repo clone_repo2
cd clone_repo2
git create
这将在GitHub上创建一个新的repo。
git remote set-url https://github.com/username/clone_repo2
git push