gpt4 book ai didi

github-api - 如何使用 GitHub Rest Api 在 GitHub 中创建子模块

转载 作者:行者123 更新时间:2023-12-01 09:52:18 25 4
gpt4 key购买 nike

我发现GitHub上有Create TreeCreate File API,但我仍然不确定如何创建子模块项目,对于Create Tree Api,如何指定Sha,对于Create File Api,似乎我们无法设置项目类型。顺便说一句,我需要先创建 .gitmodules 文件吗?

最佳答案

我今天早些时候尝试这样做。

这是我的工作流程:

  1. Create a tree
  2. Create a commit
  3. Update the reference

让我举个小例子来说明一下。

假设您要添加子模块的仓库的 master 分支上的最新提交是 $BASE_SHA


<强>1。创建一棵树

假设您的仓库中还没有任何子模块,您需要先创建一个名为 .gitmodules 的文件。然后您可以创建对它的引用。

POST /repos/:owner/:repo/git/trees
{
"base_tree": $BASE_SHA,
"tree": [
// create submodule config
{
"path": ".gitmodules",
"mode": "100644",
"type": "blob",
"content": "[submodule \"rails\"]\n\tpath = rails\n\turl = https://github.com/rails/rails"
},
// link to submodule
{
"path": "rails",
"mode": "160000",
"type": "commit",
"sha": "39e087cbf5628ecc351fc86a3a1e320be193bf29"
}
]
}

然后 API 服务器将向您发送响应

{
"sha": $TREE_SHA,
"url": "...",
"tree": [...]
}



<强>2。创建提交

然后我们使用新创建的树的 sha 来创建一个提交(以 $BASE_SHA 作为其父级)。

POST /repos/:owner/:repo/git/commits
{
"message": "commit message",
"tree": $TREE_SHA,
"parents": [$BASE_SHA]
}

然后服务器会返回

{
"sha": $COMMIT_SHA,
"url": "...",
// other content omitted here ..
}

<强>3。更新引用

然后我们需要更新master

PATCH /repos/:owner/:repo/git/refs/heads/master
{
"sha": $COMMIT_SHA,
"force": true
}

如果没有返回错误,我们就准备好了。

刷新您的 GitHub 存储库页面,您会发现子模块已添加。

关于github-api - 如何使用 GitHub Rest Api 在 GitHub 中创建子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com