You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab指定私有组下通过API创建项目并禁用提交历史重写

报错原因

你当前收到的字段校验报错,是因为直接把包含/的组层级路径填入了name和path参数中:这两个参数仅允许填写项目本身的名称与访问路径,不支持携带组路径。

正确指定项目所属组的方法

第一步:获取目标私有组的ID

调用组查询接口,拿到目标组的唯一ID(即后续需要用到的namespace_id):

curl --header "PRIVATE-TOKEN: 你的个人访问令牌" "https://你的GitLab实例域名/api/v4/groups?search=你的目标组名称"

返回结果中的id字段即为目标组的ID。

第二步:调用创建项目接口

创建时通过namespace_id参数绑定目标组,示例命令如下:

curl --header "PRIVATE-TOKEN: 你的个人访问令牌" \
-X POST "https://你的GitLab实例域名/api/v4/projects" \
-H "Content-Type: application/json" \
-d '{
  "name": "项目名称",
  "path": "项目访问路径",
  "namespace_id": 上一步查询到的组ID,
  "visibility": "private"
}'

如果需要批量创建多个项目,编写脚本遍历项目名称列表,重复执行该请求即可。

配置禁用提交历史重写规则

禁用提交历史重写本质是禁止非快进推送,创建项目后调用推送规则配置接口即可实现,将返回的新建项目ID替换到下方命令对应位置:

curl --header "PRIVATE-TOKEN: 你的个人访问令牌" \
-X POST "https://你的GitLab实例域名/api/v4/projects/新建项目ID/push_rules" \
-H "Content-Type: application/json" \
-d '{
  "deny_non_fast_forward": true,
  "deny_delete_tag": true
}'

deny_non_fast_forward设为true即可禁止所有分支的强制推送,避免提交历史被重写;deny_delete_tag设为true可额外禁止标签删除,按需配置即可。

注意事项

  • 个人访问令牌需要提前开启api权限
  • 你的账号需要对目标私有组持有至少Maintainer权限,才可完成项目创建和规则配置操作

内容的提问来源于stack exchange,提问作者user1868607

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:57:05