Class GitClient

java.lang.Object
ink.icoding.github4j.GithubClient
ink.icoding.github4j.client.GitClient

public class GitClient extends GithubClient
Git 底层对象操作客户端。

提供对 Git 引用(refs)、提交(commits)、Blob、Tree、标签(tags)等底层对象的 CRUD 操作。 这些是 Git 数据模型的低级 API,适用于需要精细操作 Git 对象的场景。

  • Constructor Details

  • Method Details

    • getRef

      public GithubResponse<GitRef> getRef(String owner, String repo, String ref)
      获取指定引用(分支/标签)。

      对应端点: GET /repos/{owner}/{repo}/git/ref/{ref}

      示例: getRef("owner", "repo", "heads/main")

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      ref - 引用路径(如 "heads/main", "tags/v1.0")
      Returns:
      引用信息,包含 sha 和指向的对象
    • listRefs

      public Page<GitRef> listRefs(String owner, String repo, String namespace)
      列出指定命名空间下的所有引用。

      对应端点: GET /repos/{owner}/{repo}/git/refs/{namespace}

      示例: listRefs("owner", "repo", "heads") 列出所有分支

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      namespace - 引用命名空间(如 "heads", "tags")
      Returns:
      引用列表(分页)
    • createRef

      public GithubResponse<GitRef> createRef(String owner, String repo, Map<String,String> body)
      创建新引用(分支或标签)。

      对应端点: POST /repos/{owner}/{repo}/git/refs

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      body - 请求体,必须包含 "ref"(如 "refs/heads/feature-branch")和 "sha"
      Returns:
      创建的引用信息
    • updateRef

      public GithubResponse<GitRef> updateRef(String owner, String repo, String ref, Map<String,Object> body)
      更新引用指向的提交。

      对应端点: PATCH /repos/{owner}/{repo}/git/refs/{ref}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      ref - 引用路径(如 "heads/main")
      body - 请求体,包含 "sha" 和可选的 "force"
      Returns:
      更新后的引用信息
    • deleteRef

      public void deleteRef(String owner, String repo, String ref)
      删除引用。

      对应端点: DELETE /repos/{owner}/{repo}/git/refs/{ref}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      ref - 引用路径(如 "heads/feature-branch")
    • getCommit

      public GithubResponse<GitCommit> getCommit(String owner, String repo, String commitSha)
      获取指定 Git 提交对象。

      对应端点: GET /repos/{owner}/{repo}/git/commits/{commit_sha}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      commitSha - 提交的 SHA 哈希
      Returns:
      Git 提交对象,包含 tree、parent、author、committer、message 等
    • createCommit

      public GithubResponse<GitCommit> createCommit(String owner, String repo, Map<String,Object> body)
      创建新的 Git 提交对象。

      对应端点: POST /repos/{owner}/{repo}/git/commits

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      body - 请求体,包含 "message"、"tree"、"parents"、"author"、"committer" 等
      Returns:
      创建的 Git 提交对象
    • getBlob

      public GithubResponse<GitBlob> getBlob(String owner, String repo, String fileSha)
      获取指定 Git Blob 对象(文件内容)。

      对应端点: GET /repos/{owner}/{repo}/git/blobs/{file_sha}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      fileSha - Blob 的 SHA 哈希
      Returns:
      Git Blob 对象,包含 content 和 encoding
    • createBlob

      public GithubResponse<GitBlob> createBlob(String owner, String repo, Map<String,String> body)
      创建新的 Git Blob 对象。

      对应端点: POST /repos/{owner}/{repo}/git/blobs

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      body - 请求体,包含 "content" 和 "encoding"(默认 utf-8)
      Returns:
      创建的 Git Blob 对象
    • getTree

      public GithubResponse<GitTree> getTree(String owner, String repo, String treeSha, boolean recursive)
      获取指定 Git Tree 对象(目录结构)。

      对应端点: GET /repos/{owner}/{repo}/git/trees/{tree_sha}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      treeSha - Tree 的 SHA 哈希
      recursive - 是否递归获取子树(设为 true 获取完整文件树)
      Returns:
      Git Tree 对象,包含 tree 条目列表
    • createTree

      public GithubResponse<GitTree> createTree(String owner, String repo, Map<String,Object> body)
      创建新的 Git Tree 对象。

      对应端点: POST /repos/{owner}/{repo}/git/trees

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      body - 请求体,包含 "tree" 数组(每个条目有 path、mode、type、sha)和可选的 "base_tree"
      Returns:
      创建的 Git Tree 对象
    • getTag

      public GithubResponse<GitTag> getTag(String owner, String repo, String tagSha)
      获取指定 Git 标签对象。

      对应端点: GET /repos/{owner}/{repo}/git/tags/{tag_sha}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      tagSha - 标签的 SHA 哈希
      Returns:
      Git 标签对象,包含 tag、message、tagger、object 等
    • createTag

      public GithubResponse<GitTag> createTag(String owner, String repo, Map<String,Object> body)
      创建新的 Git 标签对象(轻量标签应直接用 createRef)。

      对应端点: POST /repos/{owner}/{repo}/git/tags

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      body - 请求体,包含 "tag"、"message"、"object"(sha)、"type"、"tagger" 等
      Returns:
      创建的 Git 标签对象