Help us learn about your current experience with the documentation. Take the survey.

项目分支 API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

使用此 API 来管理 GitLab 项目的分支。更多信息,请参阅 forks

分支一个项目

将项目分支到您的个人命名空间或提供的命名空间中。

先决条件:

  • 您必须经过身份验证。

项目的分支操作是异步的,在后台作业中完成。请求会立即返回。要确定项目分支是否完成,请查询新项目的 import_status

POST /projects/:id/fork
属性 类型 必需 描述
id integer or string 项目的 ID 或 URL 编码路径
branches string 要分支的分支(空表示所有分支)。
description string 分配给分支后生成项目的描述。
mr_default_target_self boolean 对于分支项目,将合并请求的目标设为此项目。如果为 false,则目标是上游项目。
name string 分配给分支后生成项目的名称。
namespace_id integer 项目被分支到的命名空间的 ID。
namespace_path string 项目被分支到的命名空间的路径。
namespace integer or string (已弃用) 项目被分支到的命名空间的 ID 或路径。
path string 分配给分支后生成项目的路径。
visibility string 分配给分支后生成项目的 可见性级别

列出项目的分支

列出您有权访问的、与指定项目建立了分支关系的项目。

GET /projects/:id/forks

支持的属性:

属性 类型 必需 描述
id integer or string 项目的 ID 或 URL 编码路径
archived boolean 按归档状态限制。
membership boolean 按当前用户是成员的项目限制。
min_access_level integer 按当前用户最小 角色 (access_level) 限制。
order_by string idnamepathcreated_atupdated_atstar_countlast_activity_at 字段排序返回项目。默认为 created_at
owned boolean 按当前用户明确拥有的项目限制。
search string 返回符合搜索条件的项目列表。
simple boolean 仅返回每个项目的有限字段。未经身份验证,此操作无效;仅返回简单字段。
sort string ascdesc 顺序返回项目。默认为 desc
starred boolean 按当前用户加星标的项目限制。
statistics boolean 包含项目统计信息。仅对至少具有 Reporter 角色的用户可用。
updated_after datetime 将结果限制在指定时间后最后更新的项目。格式:ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)。在 GitLab 15.10 中引入
updated_before datetime 将结果限制在指定时间前最后更新的项目。格式:ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)。在 GitLab 15.10 中引入
visibility string publicinternalprivate 可见性限制。
with_custom_attributes boolean 在响应中包含 自定义属性(仅限管理员)
with_issues_enabled boolean 按启用的 issues 功能限制。
with_merge_requests_enabled boolean 按启用的 merge requests 功能限制。

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/forks"

示例响应:

[
  {
    "id": 3,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "internal",
    "ssh_url_to_repo": "[email protected]:diaspora/diaspora-project-site.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
    "web_url": "http://example.com/diaspora/diaspora-project-site",
    "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora project"
    ],
    "topics": [
      "example",
      "disapora project"
    ],
    "name": "Diaspora Project Site",
    "name_with_namespace": "Diaspora / Diaspora Project Site",
    "path": "diaspora-project-site",
    "path_with_namespace": "diaspora/diaspora-project-site",
    "repository_object_format": "sha1",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora"
    },
    "import_status": "none",
    "archived": true,
    "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 1,
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  }
]

在项目之间创建分支关系

在项目之间创建分支关系。

先决条件:

  • 您必须是管理员或在项目上被分配了所有者角色。
POST /projects/:id/fork/:forked_from_id

支持的属性:

属性 类型 必需 描述
forked_from_id ID 被分支的项目的 ID。
id integer or string 项目的 ID 或 URL 编码路径

删除项目之间的分支关系

删除项目之间的分支关系。

先决条件:

  • 您必须是管理员或在项目上被分配了所有者角色。
DELETE /projects/:id/fork

支持的属性:

属性 类型 必需 描述
id integer or string 项目的 ID 或 URL 编码路径