有没有一种使用 CLI 在 Gitlab 上创建仓库的方法?如果必须要使用 ssh 我也不介意。
gitlab-cli 已不再维护,作者建议使用 Gitlab 模块,它还包括一个 CLI 工具。
对于您的具体请求——在命令行上创建项目,请使用以下命令:
gitlab create_project "YOUR_PROJECT_NAME" "{namespace_id: 'YOUR_NUMERIC_GROUP_ID'}"
请确保使用选项 namespace_id
而非 group_id
! 如果不确定您的 GROUP_ID
是什么,可以使用
gitlab groups | grep YOUR_GROUP_NAME
来查找。
每个命令的参数可以从 API 文档 中推断出。任何非标量值参数都必须以内联 YAML 语法(如上所示)进行编码。
gitlab create_project "{visibility_level: 10}" $GIT_REPO_NAME
。 - MoOx如果您只想创建一个repo,不需要第三方应用程序。您可以直接向gitlab API发送POST请求来创建repo。
进入帐户选项卡,在个人资料中找到私有标记。复制它。
现在打开终端并运行此命令,使用私有标记(比如foo
)和您的repo名称(比如bar
)。
curl -H "Content-Type:application/json" https://gitlab.com/api/v4/projects?private_token=foo -d "{ \"name\": \"bar\" }"
为了方便起见,如果您不想每次运行此命令,可以创建一个shell脚本。
#!/bin/sh
curl -H "Content-Type:application/json" https://gitlab.com/api/v4/projects?private_token=foo -d "{ \"name\": \"$1\" }"
将以下内容保存到文件 gcr.sh
中,并使用 chmod + x gcr.sh
使其可执行。
现在要创建一个名为 bar
的仓库,请运行
$ ./gcr.sh bar
curl
的REST API,但它还具有以下特点:
curl
以非零代码退出(通过-f
)path
参数而不是name
参数,从而避免使用不同路径的风险api
范围访问权限的令牌。REPO_NAME=foo1
GITLAB_TOKEN=xxxxxxxxxxxxxxxxxxxx # Enter your own.
curl -f -X POST \
-H "PRIVATE-TOKEN: ${GITLAB_TOKEN}" -H "Content-Type:application/json" \
"https://gitlab.com/api/v4/projects" -d "{\"path\": \"${REPO}\", \"visibility\": \"private\"}"
这个答案只适用于以user身份创建代码仓库。以admin身份创建代码仓库的请求是不同的。
顺便提一下,明确地创建代码仓库是可选的,因为众所周知 GitLab 能够在第一次推送时创建代码仓库。 (致谢:Elan R.)
现在 GitLab 支持通过 URL 创建新存储库。 如果您的 GitLab 用户名是 shahidcodes
,则可以执行以下步骤:
git init # init a repo if you don't have already
git remote add origin https://gitlab.com./<your_username>/<new_repo_name>
git push -u origin master
remote: The private project shahidcodes/new_repo_name was successfully created.
remote:
remote: To configure the remote, run:
remote: git remote add origin https://gitlab.com/shahidcodes/new_repo_name.git
remote:
remote: To view the project, visit:
remote: https://gitlab.com/shahidcodes/new_repo_name
remote:
remote:
remote:
To https://gitlab.com/shahidcodes/new_repo_name
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
gitlify() {
[ $# -eq 0 ] && return 1
repo_name=$1
username=smeagol
token=01234567890
curl -H "Content-Type:application/json" https://gitlab.com/api/v4/projects?private_token=$token -d "{\"name\": \"$repo_name\"}"
if [ $? -eq 0 ];then
git init
git add .
git commit -m "first blood"
git remote add origin git@gitlab.com:$username/$repo_name.git
git push -u origin master
else
echo "error create gitlab repo $repo_name"
fi
}
您需要先获取您用户名的令牌。一旦这个bash函数被放置,您可以通过以下方式使用它:
mkdir /tmp/firstblood
echo '#hello world' > /tmp/firstblood/README.md
cd /tmp/firstblood
gitlify fallenangel
curl
真的会在仓库未创建时自动失败并返回非零退出码吗?我不相信它会这样做。我想说,即使请求失败,它的退出码默认也是0。除非你使用 -f
参数。 - Asclepius易于使用:
本答案适用于2019年8月。将来,其数据可能已过时。
实验室是一个CLI工具,可以简化与GitLab存储库的一些操作。实验室是GitHub的hub扩展的Gitlab等价物。
第一次运行实验室后,它将提示您输入令牌。创建个人访问令牌并选择所需的范围api
→ 将其粘贴到终端中 → Enter。
然后运行lab project create
:
lab project create -n KiraLab --public -d "Kira lab demo project"
有以下选项可用:
--public
— 将存储库设为公共而非私有-d
, --description
— 创建描述跨平台的Go编写的命令行实用程序,用于GitLab存储库操作。
创建您的GitLab个人访问令牌 → gitlab-cli login YOUR_TOKEN
→ 运行gitlab-cli project create
命令:
gitlab-cli project create KiraGitLabCLI
请不要将这个Go项目和Ruby gitlab-cli工具以及@thameera answer混淆。
请参考 glab
和命令 glab repo create
引用文档:
# create a repository under your account using the current directory name
$ glab repo create
# create a repository with a specific name
$ glab repo create my-project
export GITLAB_API_TOKEN=______
添加到您的 .bashrc
或相关文件中,然后运行:curl --request POST -H "PRIVATE-TOKEN: ${GITLAB_API_TOKEN}" \
-H "Content-Type:application/json" \
"https://gitlab.com/api/v4/projects" \
-d "{ \"name\":\"test\", \"description\":\"Description.\" }"