如何通过GitHub API重命名仓库?

11

看了一下GitHub API参考文档,发现有很多好东西,但没找到通过API重命名存储库的方法。有没有什么方法可以做到这一点?

5个回答

21
创建一些变量以增加可读性:
user=MyUserName
pass=MyPassword
newName='{"name": "NewNameForRepo"}'
oldName="MyRepo"

然后使用curl发送请求:

curl -u "$user:$pass" -X PATCH -d "$newName" https://api.github.com/repos/$user/$oldName

1
我已确认这个可行。我使用了OAuth2令牌而不是user:pass - Paul Annesley
更清晰地说:-X 用于指定除PUT、GET、HEAD和POST之外的另一个请求方法,patch用于部分修改服务器上的资源。 -d 用于 POST 键值对,请参阅我在 X 标志上的链接。 - Timo
除了 @PaulAnnesley 的评论外,你还可以这样做:使用 curl -u "$user:$token.. 替代 curl -u $user:$pw.. - Timo

4
这可以通过GitHub API方法编辑代码库(Edit Repository)来实现,但以下是使用curl最简单的示例:
curl \
 -H "Authorization: Token [token]" \
 -H "Content-Type:application/json" \
 -H "Accept: application/json" \
 -X PATCH \
 --data '{ "name": "new-repo-name" }' \
 https://api.github.com/repos/owner/old-repo-name

0
如果我们使用 GitHub CLI:
gh alias set repo-rename 'api -X PATCH "repos/$1" -f name="$2"'

gh repo-rename username/oldreponame newreponame

0

braitsch已经说过的基础上,补充一些额外的注释:

如果您正在尝试在组织下重命名存储库,请添加这些变量:

myToken='XXXX_Your_Personal_Access_Token_XXXX'
myOrg="MyGithubOrg"
newName='{"name": "NewNameForRepo"}'
oldName="MyRepo"

然后,像这样进行一个curl请求:

curl -H 'Authorization: token $myToken' -X PATCH -d "$newName" https://api.github.com/repos/$myOrg/$oldName 

-3
创建一个新的仓库,将其推送并删除旧的仓库?

或通过他们的API进行分叉/删除。 - wnoise
1
创建/推送/删除解决方案有点可行,但新的仓库将包含我从本地副本推送的任何内容,因此它不一定是旧的 GitHub 仓库的完美副本。另外,如果我这样做了,我会失去问题、维基和其他东西吗? - Ryan C. Thompson
是的,您会失去问题和维基页面。也许您想问一下GitHub的支持团队? - Stefan Näwe

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