如何通过 github API 在 github 中创建存储库?

Posted

技术标签:

【中文标题】如何通过 github API 在 github 中创建存储库?【英文标题】:How to create repository in github through github API? 【发布时间】:2015-04-07 18:46:56 【问题描述】:

我正在尝试使用 github api 在特定组织下创建存储库。我在看这个site,它讨论了如何在特定组织下创建存储库。

Create a new repository in this organization. The authenticated user must be a member of the specified organization.
POST /orgs/:org/repos

现在我无法理解在特定组织下创建存储库所需的完整 URL 是什么?我有我的用户名和密码,可用于通过 https url 在组织下创建存储库。

我的 github 实例 url 是这样的 - https://github.host.com

我希望我的存储库在创建后是这样的 -

https://github.host.com/Database/ClientService

在组织下创建存储库时,我的 curl 命令是什么样的?

【问题讨论】:

你需要的所有信息都是here,描述在gihub帮助页面developer.github.com/v3/guides/getting-started/… 感谢您的建议。这里的令牌是什么?我将如何获得令牌?很抱歉提出愚蠢的问题,第一次工作所以不确定。 阅读这里怎么做:help.github.com/articles/… 【参考方案1】:

转到设置 -> 开发者设置 -> 个人访问令牌在OAuth应用下。现在,生成一个启用了所需权限的新访问令牌。 如果您已经有一个,请忽略它。

用户帐号:

在以下命令中将ACCESS_TOKEN 替换为TokenNEW_REPO_NAME 使用您的新存储库Name

curl -H "Authorization: token ACCESS_TOKEN" --data '"name":"NEW_REPO_NAME"' https://api.github.com/user/repos

组织:

curl -H "Authorization: token ACCESS_TOKEN" --data '"name":"NEW_REPO_NAME"' https://api.github.com/orgs/ORGANIZATION_NAME/repos

【讨论】:

创建repo的权限是什么?【参考方案2】:

第 1 步:创建个人 access token 并使用它代替密码

第 2 步:在命令行上使用给定的 API 作为POST 请求

https://api.github.com/orgs/<organisation_name>/repos?access_token=<generated token>

https://api.github.com/user/<username>/repos?access_token=<generated token>

在正文中,将其作为有效负载传递:


  "name": "<Repo Name>",
  "description": "<Some message>",
  "homepage": "https://github.com",
  "private": false,

您可以传递其他详细信息。 更多详情:click here

【讨论】:

不再支持此方法 - 无法在 url 中添加访问令牌。您将不得不使用授权标头 如果使用 Insomnia,仍然可以使用这种 url 和 JSON 负载 - 只需将令牌作为 Bearer type auth 放入。【参考方案3】:

cli.github.com有新的解决方案官方。其他答案已弃用。

首先安装 GitHub CLI。运行:

brew install github/gh/gh

然后创建一个具有特定名称的存储库(默认:私有)输入以下命令:

gh repo create my-project

这里是官方文档link创建一个repo。

【讨论】:

【参考方案4】:

基于以上两个答案,这里有一个bash &gt;=4.2 脚本来创建一个克隆一个repo。

#!/usr/bin/env bash
TOKEN=0000000000000000000000000000000000000000

if [[ $# < 3 ]]; then
    echo "arguments: $0 <RepoName> <RepoDescription>"
    exit 1
fi

REPO_NAME=$1; shift
REPO_DESCRIPTION="$@"

echo "Name: $REPO_NAME"
echo "Description: $REPO_DESCRIPTION"
echo "Calling GitHub to create repo"

read -r -d '' PAYLOAD <<EOP

  "name": "$REPO_NAME",
  "description": "$REPO_DESCRIPTION",
  "homepage": "https://github.com/$REPO_NAME",
  "private": false

EOP

shopt -s lastpipe
curl -H "Authorization: token $TOKEN" --data "$PAYLOAD" \
    https://api.github.com/user/repos | readarray output

url=''
for line in "$output[@]"; do
    echo -n "$line"
    #   "html_url": "https://github.com/sfinktah/vim-hex-sum",
    if [[ $line == *html_url* ]]; then
        l=$line#*\"; l=$l#*\"; l=$l#*\"; url=$l%\"*
    fi
done

count=0
[[ $url == http*://*github.com/* ]] &&
    until git clone $url; do 
        sleep 10; (( count++ > 5 )) && break; echo Waiting...
    done

【讨论】:

【参考方案5】:

检查这个答案这是一个旧方法, 无需安装 github cli

直接使用api在终端创建repo

替换用户名和repoName

curl -u "userNameHere" https://api.github.com/user/repos -d &gt; '"name":"repoNameHere","private":true'

输入密码并完成

更多信息请参考新的官方文档here

【讨论】:

【参考方案6】:

在 github 上托管的企业中创建 repo。为我工作

请在执行前更改尖括号中的值。把username:token放在-u之后

curl -u https://github.com/api/v3/orgs/<org-name>/repos -d '"name":"<reponame>"

【讨论】:

【参考方案7】:

推荐Github SDK Octokit。创建存储库:

const octokit = new Octokit( auth: `personal-access-token123` );

// Create a repo for user.
octokit.rest.repos.createForAuthenticatedUser(
  name,
);

// Create a repo in an organization.
octokit.rest.repos.createInOrg(
  org,
  name,
);

【讨论】:

以上是关于如何通过 github API 在 github 中创建存储库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 REST API 或 ARM 模板通过私有 GitHub 存储库在应用服务中部署应用?

通过 Github Graphql v4 API 列出所有用户

Github Dashboard-Feed 通过 API 或 RSS?

如何使用 API 在 GitHub 上为主题加注星标?

如何从客户端 javascript 查询 GitHub api v4?

如何使用 GitHub REST API 通过我的个人访问令牌访问组织拥有的私有存储库中的文件数据?